From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
To: Usama Arif <usamaarif642@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
david@redhat.com, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org, corbet@lwn.net, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, hannes@cmpxchg.org,
baohua@kernel.org, shakeel.butt@linux.dev, riel@surriel.com,
ziy@nvidia.com, laoar.shao@gmail.com, dev.jain@arm.com,
baolin.wang@linux.alibaba.com, npache@redhat.com,
Liam.Howlett@oracle.com, ryan.roberts@arm.com, vbabka@suse.cz,
jannh@google.com, Arnd Bergmann <arnd@arndb.de>,
sj@kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, kernel-team@meta.com
Subject: Re: [PATCH v3 4/6] docs: transhuge: document process level THP controls
Date: Tue, 5 Aug 2025 16:08:07 +0100 [thread overview]
Message-ID: <91a21c20-088b-41bf-a728-a27650e13345@lucifer.local> (raw)
In-Reply-To: <20250804154317.1648084-5-usamaarif642@gmail.com>
On Mon, Aug 04, 2025 at 04:40:47PM +0100, Usama Arif wrote:
> 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.
>
> Signed-off-by: Usama Arif <usamaarif642@gmail.com>
> ---
> Documentation/admin-guide/mm/transhuge.rst | 38 ++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst
> index 370fba113460..a36a04394ff5 100644
> --- a/Documentation/admin-guide/mm/transhuge.rst
> +++ b/Documentation/admin-guide/mm/transhuge.rst
> @@ -225,6 +225,44 @@ 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. These calls support the
> +following arguments::
> +
> + prctl(PR_SET_THP_DISABLE, 1, 0, 0, 0):
> + This will set the MMF_DISABLE_THP_COMPLETELY mm flag which will
I'm not sure these impl details are necessary, this is an admin guide doc.
> + result in no THPs being faulted in or collapsed, irrespective
> + of global THP controls. This flag and hence the behaviour is
Also irrespective of MADV_COLLAPSE right?
Important to highlight that, as it's the only way to disable that.
> + inherited across fork(2) and execve(2).
I'd remove the 'this flag' bit here.
> +
> + prctl(PR_SET_THP_DISABLE, 1, PR_THP_DISABLE_EXCEPT_ADVISED, 0, 0):
> + This will set the MMF_DISABLE_THP_EXCEPT_ADVISED mm flag which
No need to refer to implementation detail of mm flag.
> + will result in THPs being faulted in or collapsed only for
> + the following cases:
> + - Global THP controls are set to "always" or "madvise" and
> + the process has madvised the region with either MADV_HUGEPAGE
> + or MADV_COLLAPSE.
> + - Global THP controls is set to "never" and the process has
> + madvised the region with MADV_COLLAPSE.
Nit, but prefer madvise()'d, or really 'used madvise() with the MADV_COLLAPSE
flag over the region'.
> + This flag and hence the behaviour is inherited across fork(2)
> + and execve(2).
Again drop 'this flag'.
> +
> + prctl(PR_SET_THP_DISABLE, 0, 0, 0, 0):
> + This will clear the MMF_DISABLE_THP_COMPLETELY and
> + MMF_DISABLE_THP_EXCEPT_ADVISED mm flags. The process will
Remove impl details.
> + behave according to the global THP controls. This behaviour
> + will be inherited across fork(2) and execve(2).
Something like 'this will revoke any specified THP disable behaviour and the
process will behave normally with respect to THP. As with the other THP disable
flags, this change is inherited across fork/exec.'
> +
> + prctl(PR_GET_THP_DISABLE, 0, 0, 0, 0):
> + This will return the THP disable mm flag status of the process
> + that was set by prctl(PR_SET_THP_DISABLE, ...). i.e.
> + - 1 if MMF_DISABLE_THP_COMPLETELY flag is set
This is incorrect, this is set if either flag is set.
Again, remove impl details.
> + - 3 if MMF_DISABLE_THP_EXCEPT_ADVISED flag is set
> + - 0 otherwise.
This is really not clear, people are going to wonder why it's randomly 3.
Maybe something like:
This returns a value whose bit 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
> -------------------
>
> --
> 2.47.3
>
Cheers, Lorenzo
next prev parent reply other threads:[~2025-08-05 15:08 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-04 15:40 [PATCH v3 0/6] prctl: extend PR_SET_THP_DISABLE to only provide THPs when advised Usama Arif
2025-08-04 15:40 ` [PATCH v3 1/6] prctl: extend PR_SET_THP_DISABLE to optionally exclude VM_HUGEPAGE Usama Arif
2025-08-04 15:40 ` [PATCH v3 2/6] mm/huge_memory: convert "tva_flags" to "enum tva_type" Usama Arif
2025-08-05 1:41 ` Baolin Wang
2025-08-05 14:35 ` Lorenzo Stoakes
2025-08-04 15:40 ` [PATCH v3 3/6] mm/huge_memory: respect MADV_COLLAPSE with PR_THP_DISABLE_EXCEPT_ADVISED Usama Arif
2025-08-05 1:49 ` Baolin Wang
2025-08-05 14:43 ` Lorenzo Stoakes
2025-08-05 15:08 ` Usama Arif
2025-08-04 15:40 ` [PATCH v3 4/6] docs: transhuge: document process level THP controls Usama Arif
2025-08-05 10:24 ` David Hildenbrand
2025-08-05 12:09 ` Usama Arif
2025-08-05 15:08 ` Lorenzo Stoakes [this message]
2025-08-04 15:40 ` [PATCH v3 5/6] selftests: prctl: introduce tests for disabling THPs completely Usama Arif
2025-08-05 10:30 ` David Hildenbrand
2025-08-05 12:13 ` Usama Arif
2025-08-05 12:16 ` David Hildenbrand
2025-08-05 12:39 ` David Hildenbrand
2025-08-05 12:46 ` Usama Arif
2025-08-05 12:55 ` David Hildenbrand
2025-08-05 14:26 ` Usama Arif
2025-08-05 14:32 ` David Hildenbrand
2025-08-04 15:40 ` [PATCH v3 6/6] selftests: prctl: introduce tests for disabling THPs except for madvise Usama Arif
2025-08-05 10:36 ` David Hildenbrand
2025-08-05 12:19 ` Usama Arif
2025-08-05 12:29 ` David Hildenbrand
2025-08-05 12:31 ` Usama Arif
2025-08-04 15:46 ` [PATCH v3 0/6] prctl: extend PR_SET_THP_DISABLE to only provide THPs when advised Usama Arif
2025-08-13 6:06 ` Lorenzo Stoakes
2025-08-13 8:07 ` Usama Arif
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91a21c20-088b-41bf-a728-a27650e13345@lucifer.local \
--to=lorenzo.stoakes@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=corbet@lwn.net \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=hannes@cmpxchg.org \
--cc=jannh@google.com \
--cc=kernel-team@meta.com \
--cc=laoar.shao@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=npache@redhat.com \
--cc=riel@surriel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shakeel.butt@linux.dev \
--cc=sj@kernel.org \
--cc=surenb@google.com \
--cc=usamaarif642@gmail.com \
--cc=vbabka@suse.cz \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox