On 5/3/17 12:02 PM, Prakash Sangappa wrote:
On 5/2/17 4:43 PM, Dave Hansen wrote:

Ideally, it would be something that is *not* specifically for hugetlbfs.
  MADV_NOAUTOFILL, for instance, could be defined to SIGSEGV whenever
memory is touched that was not populated with MADV_WILLNEED, mlock(), etc...

If this is a generic advice type, necessary support will have to be implemented
in various filesystems which can support this.

The proposed behavior for 'noautofill' was to not fill holes in files(like sparse files).
In the page fault path, mm would not know if the mmapped address on which
the fault occurred, is over a hole in the file or just that the page is not available in the page cache. The underlying filesystem would be called and it determines if it is a hole and that is where it would fail and not fill the hole, if this support is added. Normally, filesystem which support sparse files(holes in file) automatically fill the hole when accessed. Then there is the issue of file system block size and page size. If the block sizes are smaller then page size, it could mean the noautofill would only work
if the hole size is equal to  or a multiple of, page size?

In case of hugetlbfs it is much straight forward. Since this filesystem is not like a normal filesystems and and the file sizes are multiple of huge pages. The hole will be a multiple of the huge page size. For this reason then should the advise be specific to hugetlbfs?




Any further comments? I think introducing a general madvise option or a mmap flag applicable to all filesystems, may not be required. The 'noautofill' behavior would be specifically useful in hugetlbfs filesystem.

So, if it is specific to hugetlbfs, will the mount option be ok? Otherwise adding a madvise / mmap option specific to hugetlbfs, be preferred?

Reply via email to