• Kirill A. Shutemov's avatar
    shmem: prepare huge= mount option and sysfs knob · 5a6e75f8
    Kirill A. Shutemov authored
    This patch adds new mount option "huge=".  It can have following values:
    
      - "always":
    	Attempt to allocate huge pages every time we need a new page;
    
      - "never":
    	Do not allocate huge pages;
    
      - "within_size":
    	Only allocate huge page if it will be fully within i_size.
    	Also respect fadvise()/madvise() hints;
    
      - "advise:
    	Only allocate huge pages if requested with fadvise()/madvise();
    
    Default is "never" for now.
    
    "mount -o remount,huge= /mountpoint" works fine after mount: remounting
    huge=never will not attempt to break up huge pages at all, just stop
    more from being allocated.
    
    No new config option: put this under CONFIG_TRANSPARENT_HUGEPAGE, which
    is the appropriate option to protect those who don't want the new bloat,
    and with which we shall share some pmd code.
    
    Prohibit the option when !CONFIG_TRANSPARENT_HUGEPAGE, just as mpol is
    invalid without CONFIG_NUMA (was hidden in mpol_parse_str(): make it
    explicit).
    
    Allow enabling THP only if the machine has_transparent_hugepage().
    
    But what about Shmem with no user-visible mount? SysV SHM, memfds,
    shared anonymous mmaps (of /dev/zero or MAP_ANONYMOUS), GPU drivers' DRM
    objects, Ashmem.  Though unlikely to suit all usages, provide sysfs knob
    /sys/kernel/mm/transparent_hugepage/shmem_enabled to experiment with
    huge on those.
    
    And allow shmem_enabled two further values:
    
      - "deny":
    	For use in emergencies, to force the huge option off from
    	all mounts;
      - "force":
    	Force the huge option on for all - very useful for testing;
    
    Based on patch by Hugh Dickins.
    
    Link: http://lkml.kernel.org/r/1466021202-61880-28-git-send-email-kirill.shutemov@linux.intel.comSigned-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5a6e75f8
shmem.c 94.2 KB