On 2025/5/20 18:26, David Hildenbrand wrote:
On 20.05.25 12:09, Baolin Wang wrote:
Sorry for late reply.
On 2025/5/17 14:47, Nico Pache wrote:
On Thu, May 15, 2025 at 9:20 PM Baolin Wang
<baolin.w...@linux.alibaba.com> wrote:
On 2025/5/15 11:22, Nico Pache wrote:
khugepaged scans anons PMD ranges for potential collapse to a
hugepage.
To add mTHP support we use this scan to instead record chunks of
utilized
sections of the PMD.
khugepaged_scan_bitmap uses a stack struct to recursively scan a
bitmap
that represents chunks of utilized regions. We can then determine what
mTHP size fits best and in the following patch, we set this bitmap
while
scanning the anon PMD. A minimum collapse order of 2 is used as
this is
the lowest order supported by anon memory.
max_ptes_none is used as a scale to determine how "full" an order must
be before being considered for collapse.
When attempting to collapse an order that has its order set to
"always"
lets always collapse to that order in a greedy manner without
considering the number of bits set.
Signed-off-by: Nico Pache <npa...@redhat.com>
Sigh. You still haven't addressed or explained the issues I previously
raised [1], so I don't know how to review this patch again...
Can you still reproduce this issue?
Yes, I can still reproduce this issue with today's (5/20) mm-new branch.
I've disabled PMD-sized THP in my system:
[root]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root]# cat /sys/kernel/mm/transparent_hugepage/hugepages-2048kB/enabled
always inherit madvise [never]
Thanks for the easy reproducer, Baolin! It's certainly something that
must be fixed.
And I tried calling madvise() with MADV_COLLAPSE for anonymous memory,
and I can still see it collapsing to a PMD-sized THP.
This almost sounds like it could be converted into an easy selftest.
Baolin, do you have other ideas for easy selftests? It might be good to
include some in the next version. >
I can think of: enable only a single size, then MADV_COLLAPSE X times
and see if it worked. etc.
Yes. And some easy test cases I want to write are:
(1) Enable all mTHP size, tuning 'max_ptes_none' parameter to check if
the suitable sized mTHP is being collapsed (including MADV_COLLAPSE and
khugepaged).
(2) Enable only a single size, calling MADV_COLLAPSE madvise() or
khugepaged to check if the suitable sized mTHP is being collapsed.