Re:[PATCH v3 3/6] mm: shmem: add multi-size THP sysfs interface for anonymous shmem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At 2024-05-30 10:04:14, "Baolin Wang" <baolin.wang@xxxxxxxxxxxxxxxxx> wrote:

>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", "deny", "force". These values follow the same semantics as the top
>level, except the 'deny' is equivalent to 'never', and 'force' is equivalent
>to 'always' to keep compatibility.
>
>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.
>
>Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
>---
> Documentation/admin-guide/mm/transhuge.rst | 29 +++++++
> include/linux/huge_mm.h                    | 10 +++
> mm/huge_memory.c                           | 11 +--
> mm/shmem.c                                 | 96 ++++++++++++++++++++++
> 4 files changed, 138 insertions(+), 8 deletions(-)
>
>diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst
>index d414d3f5592a..659459374032 100644
>--- a/Documentation/admin-guide/mm/transhuge.rst
>+++ b/Documentation/admin-guide/mm/transhuge.rst
>@@ -332,6 +332,35 @@ deny
> force
>     Force the huge option on for all - very useful for testing;
> 
>+Anonymous shmem can also use "multi-size THP" (mTHP) by adding a new sysfs knob
>+to control mTHP allocation: /sys/kernel/mm/transparent_hugepage/hugepages-<size>kB/shmem_enabled.
>+Its value for each mTHP is essentially consistent with the global setting, except
>+for the addition of 'inherit' to ensure compatibility with the global settings.
>+always
>+    Attempt to allocate <size> huge pages every time we need a new page;
>+
>+inherit
>+    Inherit the top-level "shmem_enabled" value. By default, PMD-sized hugepages
>+    have enabled="inherit" and all other hugepage sizes have enabled="never";
>+
>+never
>+    Do not allocate <size> huge pages;
>+
>+within_size
>+    Only allocate <size> huge page if it will be fully within i_size.
>+    Also respect fadvise()/madvise() hints;
>+
>+advise
>+    Only allocate <size> huge pages if requested with fadvise()/madvise();
>+
>+deny
>+    Has the same semantics as 'never', now mTHP allocation policy is only
>+    used for anonymous shmem and no not override tmpfs.
>+
>+force
>+    Has the same semantics as 'always', now mTHP allocation policy is only
>+    used for anonymous shmem and no not override tmpfs.
>+

I just briefly reviewed the discussion about the value of hugepages-<size>kB/shmem_enabled
in V1 [PATCH 5/8]. Is there a conclusion now? Maybe I left out some important information.

> Need of application restart > ===========================

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux