• Baolin Wang's avatar
    mm: shmem: add multi-size THP sysfs interface for anonymous shmem · 4b989955
    Baolin Wang authored
    To support the use of mTHP with anonymous shmem, add a new sysfs interface
    'shmem_enabled' in the '/sys/kernel/mm/transparent_hugepage/hugepages-kB/'
    directory for each mTHP to control whether shmem is enabled for that mTHP,
    with a value similar to the top level 'shmem_enabled', which can be set
    to: "always", "inherit (to inherit the top level setting)", "within_size",
    "advise", "never".  An 'inherit' option is added to ensure compatibility
    with these global settings, and the options 'force' and 'deny' are
    dropped, which are rather testing artifacts from the old ages.
    
    By default, PMD-sized hugepages have enabled="inherit" and all other
    hugepage sizes have enabled="never" for
    '/sys/kernel/mm/transparent_hugepage/hugepages-xxkB/shmem_enabled'.
    
    In addition, if top level value is 'force', then only PMD-sized hugepages
    have enabled="inherit", otherwise configuration will be failed and vice
    versa.  That means now we will avoid using non-PMD sized THP to override
    the global huge allocation.
    
    [baolin.wang@linux.alibaba.com: fix transhuge.rst indentation]
      Link: https://lkml.kernel.org/r/b189d815-998b-4dfd-ba89-218ff51313f8@linux.alibaba.com
    [akpm@linux-foundation.org: reflow transhuge.rst addition to 80 cols]
    [baolin.wang@linux.alibaba.com: move huge_shmem_orders_lock under CONFIG_SYSFS]
      Link: https://lkml.kernel.org/r/eb34da66-7f12-44f3-a39e-2bcc90c33354@linux.alibaba.com
    [akpm@linux-foundation.org: huge_memory.c needs mm_types.h]
    Link: https://lkml.kernel.org/r/ffddfa8b3cb4266ff963099ab78cfd7184c57ac7.1718090413.git.baolin.wang@linux.alibaba.com
    
    Signed-off-by: default avatarBaolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Barry Song <v-songbaohua@oppo.com>
    Cc: Daniel Gomez <da.gomez@samsung.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Lance Yang <ioworker0@gmail.com>
    Cc: Pankaj Raghav <p.raghav@samsung.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Zi Yan <ziy@nvidia.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    4b989955
shmem.c 134 KB