Re: [PATCH 0/5] prctl: extend PR_SET_THP_DISABLE to only provide THPs when advised
From: Lorenzo Stoakes
Date: Thu Jul 31 2025 - 08:28:47 EST
You forgot the v2, please can you resend this with it, or this will get
mighty confusing.
Thanks!
On Thu, Jul 31, 2025 at 01:18:11PM +0100, Usama Arif wrote:
> This will allow individual processes to opt-out of THP = "always"
> into THP = "madvise", without affecting other workloads on the system.
> This has been extensively discussed on the mailing list and has been
> summarized very well by David in the first patch which also includes
> the links to alternatives, please refer to the first patch commit message
> for the motivation for this series.
>
> Patch 1 adds the PR_THP_DISABLE_EXCEPT_ADVISED flag to implement this, along
> with the MMF changes.
> Patch 2 is a cleanup patch for tva_flags that will allow the forced collapse
> case to be transmitted to vma_thp_disabled (which is done in patch 3).
> Patches 4-5 implement the selftests for PR_SET_THP_DISABLE for completely
> disabling THPs (old behaviour) and only enabling it at advise
> (PR_THP_DISABLE_EXCEPT_ADVISED).
>
> The patches are tested on top of 4ad831303eca6ae518c3b3d86838a2a04b90ec41
> from mm-new.
>
> v1 -> v2: https://lore.kernel.org/all/20250725162258.1043176-1-usamaarif642@xxxxxxxxx/
> - Change thp_push_settings to thp_write_settings (David)
> - Add tests for all the system policies for the prctl call (David)
> - Small fixes and cleanups
>
> David Hildenbrand (3):
> prctl: extend PR_SET_THP_DISABLE to optionally exclude VM_HUGEPAGE
> mm/huge_memory: convert "tva_flags" to "enum tva_type" for
> thp_vma_allowable_order*()
> mm/huge_memory: treat MADV_COLLAPSE as an advise with
> PR_THP_DISABLE_EXCEPT_ADVISED
>
> Usama Arif (2):
> selftests: prctl: introduce tests for disabling THPs completely
> selftests: prctl: introduce tests for disabling THPs except for
> madvise
>
> Documentation/filesystems/proc.rst | 5 +-
> fs/proc/array.c | 2 +-
> fs/proc/task_mmu.c | 4 +-
> include/linux/huge_mm.h | 60 ++-
> include/linux/mm_types.h | 13 +-
> include/uapi/linux/prctl.h | 10 +
> kernel/sys.c | 59 ++-
> mm/huge_memory.c | 11 +-
> mm/khugepaged.c | 20 +-
> mm/memory.c | 20 +-
> mm/shmem.c | 2 +-
> tools/testing/selftests/mm/.gitignore | 1 +
> tools/testing/selftests/mm/Makefile | 1 +
> .../testing/selftests/mm/prctl_thp_disable.c | 358 ++++++++++++++++++
> tools/testing/selftests/mm/thp_settings.c | 9 +-
> tools/testing/selftests/mm/thp_settings.h | 1 +
> 16 files changed, 505 insertions(+), 71 deletions(-)
> create mode 100644 tools/testing/selftests/mm/prctl_thp_disable.c
>
> --
> 2.47.3
>