linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 00/11] add shmem mTHP collapse support
@ 2025-08-20  9:07 Baolin Wang
  2025-08-20  9:07 ` [RFC PATCH 01/11] mm: khugepaged: add khugepaged_max_ptes_none check in collapse_file() Baolin Wang
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Baolin Wang @ 2025-08-20  9:07 UTC (permalink / raw)
  To: akpm, hughd, david, lorenzo.stoakes
  Cc: ziy, Liam.Howlett, npache, ryan.roberts, dev.jain, baohua,
	baolin.wang, linux-mm, linux-kernel

Based on mm/mm-new from today.

This is a follow-up patchset for mTHP collapse to support shmem (or file pages)
mTHP collapse, which is based on Nico's patchset [1].

The strategy for shmem/file mTHP collapse follows the anonymous mTHP collapse,
which is, quoting from Nico:

"while scanning PMD ranges for potential collapse candidates, keep
track of pages in KHUGEPAGED_MIN_MTHP_ORDER chunks via a bitmap. Each bit
represents a utilized region of order KHUGEPAGED_MIN_MTHP_ORDER PTEs.

After the scan is complete, we will perform binary recursion on the bitmap
to determine which mTHP size would be most efficient to collapse to. The
'max_ptes_none' will be scaled by the attempted collapse order to determine
how full a THP must be to be eligible.
"

Moreover, to facilitate the scanning of shmem/file folios, extend the
'cc->mthp_bitmap_temp' bitmap to record whether each index within the
PMD range corresponds to a present page, and then this temp bitmap is used
to determine whether each chunk should be marked as present for mTHP
collapse.

Currently, the collapse_pte_mapped_thp() does not build the mapping for mTHP.
Cause we still expect to establish the mTHP mapping via refault under the
control of fault_around. So collapse_pte_mapped_thp() remains responsible
only for building the mapping for PMD-sized THP, which is reasonable and
makes life easier.

In addition, I have added mTHP collapse selftests, and now all khugepaged
test cases can pass.

[1] https://lore.kernel.org/all/20250819134205.622806-1-npache@redhat.com/

Baolin Wang (11):
  mm: khugepaged: add khugepaged_max_ptes_none check in collapse_file()
  mm: khugepaged: generalize collapse_file for mTHP support
  mm: khugepaged: add an order check for THP statistics
  mm: khugepaged: add shmem/file mTHP collapse support
  mm: shmem: kick khugepaged for enabling none-PMD-sized shmem mTHPs
  mm: khugepaged: allow khugepaged to check all shmem/file large orders
  mm: khugepaged: skip large folios that don't need to be collapsed
  selftests:mm: extend the check_huge() to support mTHP check
  selftests: mm: move gather_after_split_folio_orders() into vm_util.c
    file
  selftests: mm: implement the mTHP hugepage check helper
  selftests: mm: add mTHP collapse test cases

 include/linux/shmem_fs.h                      |   4 +-
 mm/khugepaged.c                               | 177 +++++++++++++----
 mm/shmem.c                                    |  10 +-
 tools/testing/selftests/mm/khugepaged.c       | 162 ++++++++++++----
 tools/testing/selftests/mm/run_vmtests.sh     |   4 +
 .../selftests/mm/split_huge_page_test.c       | 135 +------------
 tools/testing/selftests/mm/uffd-common.c      |   4 +-
 tools/testing/selftests/mm/vm_util.c          | 179 +++++++++++++++++-
 tools/testing/selftests/mm/vm_util.h          |   6 +-
 9 files changed, 455 insertions(+), 226 deletions(-)

-- 
2.43.5


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-08-21  1:09 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-20  9:07 [RFC PATCH 00/11] add shmem mTHP collapse support Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 01/11] mm: khugepaged: add khugepaged_max_ptes_none check in collapse_file() Baolin Wang
2025-08-20 10:13   ` Dev Jain
2025-08-21  1:09     ` Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 02/11] mm: khugepaged: generalize collapse_file for mTHP support Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 03/11] mm: khugepaged: add an order check for THP statistics Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 04/11] mm: khugepaged: add shmem/file mTHP collapse support Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 05/11] mm: shmem: kick khugepaged for enabling none-PMD-sized shmem mTHPs Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 06/11] mm: khugepaged: allow khugepaged to check all shmem/file large orders Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 07/11] mm: khugepaged: skip large folios that don't need to be collapsed Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 08/11] selftests:mm: extend the check_huge() to support mTHP check Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 09/11] selftests: mm: move gather_after_split_folio_orders() into vm_util.c file Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 10/11] selftests: mm: implement the mTHP hugepage check helper Baolin Wang
2025-08-20  9:07 ` [RFC PATCH 11/11] selftests: mm: add mTHP collapse test cases Baolin Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).