[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1755677674.git.baolin.wang@linux.alibaba.com>
Date: Wed, 20 Aug 2025 17:07:11 +0800
From: Baolin Wang <baolin.wang@...ux.alibaba.com>
To: akpm@...ux-foundation.org,
hughd@...gle.com,
david@...hat.com,
lorenzo.stoakes@...cle.com
Cc: ziy@...dia.com,
Liam.Howlett@...cle.com,
npache@...hat.com,
ryan.roberts@....com,
dev.jain@....com,
baohua@...nel.org,
baolin.wang@...ux.alibaba.com,
linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Subject: [RFC PATCH 00/11] add shmem mTHP collapse support
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
Powered by blists - more mailing lists