docs: transhuge: document process level THP controls
This includes the PR_SET_THP_DISABLE/PR_GET_THP_DISABLE pair of prctl calls as well the newly introduced PR_THP_DISABLE_EXCEPT_ADVISED flag for the PR_SET_THP_DISABLE prctl call. Link: https://lkml.kernel.org/r/20250815135549.130506-5-usamaarif642@gmail.com Signed-off-by: Usama Arif <usamaarif642@gmail.com> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: David Hildenbrand <david@redhat.com> Cc: Dev Jain <dev.jain@arm.com> Cc: Jann Horn <jannh@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Mariano Pache <npache@redhat.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Rik van Riel <riel@surriel.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: SeongJae Park <sj@kernel.org> Cc: Shakeel Butt <shakeel.butt@linux.dev> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Yafang <laoar.shao@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
8cdc4d2701
commit
7de854910b
@@ -225,6 +225,42 @@ to "always" or "madvise"), and it'll be automatically shutdown when
|
||||
PMD-sized THP is disabled (when both the per-size anon control and the
|
||||
top-level control are "never")
|
||||
|
||||
process THP controls
|
||||
--------------------
|
||||
|
||||
A process can control its own THP behaviour using the ``PR_SET_THP_DISABLE``
|
||||
and ``PR_GET_THP_DISABLE`` pair of prctl(2) calls. The THP behaviour set using
|
||||
``PR_SET_THP_DISABLE`` is inherited across fork(2) and execve(2). These calls
|
||||
support the following arguments::
|
||||
|
||||
prctl(PR_SET_THP_DISABLE, 1, 0, 0, 0):
|
||||
This will disable THPs completely for the process, irrespective
|
||||
of global THP controls or madvise(..., MADV_COLLAPSE) being used.
|
||||
|
||||
prctl(PR_SET_THP_DISABLE, 1, PR_THP_DISABLE_EXCEPT_ADVISED, 0, 0):
|
||||
This will disable THPs for the process except when the usage of THPs is
|
||||
advised. Consequently, THPs will only be used when:
|
||||
- Global THP controls are set to "always" or "madvise" and
|
||||
madvise(..., MADV_HUGEPAGE) or madvise(..., MADV_COLLAPSE) is used.
|
||||
- Global THP controls are set to "never" and madvise(..., MADV_COLLAPSE)
|
||||
is used. This is the same behavior as if THPs would not be disabled on
|
||||
a process level.
|
||||
Note that MADV_COLLAPSE is currently always rejected if
|
||||
madvise(..., MADV_NOHUGEPAGE) is set on an area.
|
||||
|
||||
prctl(PR_SET_THP_DISABLE, 0, 0, 0, 0):
|
||||
This will re-enable THPs for the process, as if they were never disabled.
|
||||
Whether THPs will actually be used depends on global THP controls and
|
||||
madvise() calls.
|
||||
|
||||
prctl(PR_GET_THP_DISABLE, 0, 0, 0, 0):
|
||||
This returns a value whose bits indicate how THP-disable is configured:
|
||||
Bits
|
||||
1 0 Value Description
|
||||
|0|0| 0 No THP-disable behaviour specified.
|
||||
|0|1| 1 THP is entirely disabled for this process.
|
||||
|1|1| 3 THP-except-advised mode is set for this process.
|
||||
|
||||
Khugepaged controls
|
||||
-------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user