On Fri, 14 Jun 2019 11:22:01 -0700 Song Liu <songliubraving@xxxxxx> wrote: > This set follows up discussion at LSF/MM 2019. The motivation is to put > text section of an application in THP, and thus reduces iTLB miss rate and > improves performance. Both Facebook and Oracle showed strong interests to > this feature. > > To make reviews easier, this set aims a mininal valid product. Current > version of the work does not have any changes to file system specific > code. This comes with some limitations (discussed later). > > This set enables an application to "hugify" its text section by simply > running something like: > > madvise(0x600000, 0x80000, MADV_HUGEPAGE); > > Before this call, the /proc/<pid>/maps looks like: > > 00400000-074d0000 r-xp 00000000 00:27 2006927 app > > After this call, part of the text section is split out and mapped to THP: > > 00400000-00425000 r-xp 00000000 00:27 2006927 app > 00600000-00e00000 r-xp 00200000 00:27 2006927 app <<< on THP > 00e00000-074d0000 r-xp 00a00000 00:27 2006927 app > > Limitations: > > 1. This only works for text section (vma with VM_DENYWRITE). > 2. Once the application put its own pages in THP, the file is read only. > open(file, O_WRITE) will fail with -ETXTBSY. To modify/update the file, > it must be removed first. Removed? Even if the original mmap/madvise has gone away? hm. I'm wondering if this limitation can be abused in some fashion: mmap a file to which you have read permissions, run madvise(MADV_HUGEPAGE) and thus prevent the file's owner from being able to modify the file? Or something like that. What are the issues and protections here?