Re: [PATCH v12 mm-new 06/15] khugepaged: introduce collapse_max_ptes_none helper function
From: Lorenzo Stoakes <hidden>
Date: 2025-10-30 10:16:40
Also in:
linux-doc, linux-mm, lkml
On Wed, Oct 29, 2025 at 03:23:27PM -0600, Nico Pache wrote:
On Wed, Oct 29, 2025 at 12:59 PM Lorenzo Stoakes [off-list ref] wrote:quoted
On Tue, Oct 28, 2025 at 08:47:12PM -0600, Nico Pache wrote:quoted
On Tue, Oct 28, 2025 at 1:00 PM Lorenzo Stoakesquoted
Right, well I agree if we can make this 0/511 thing work, let's do that.Ok, great, some consensus! I will go ahead with that solution.:) awesome.quoted
Just to make sure we are all on the same page,I am still stabilising my understanding of the creep issue, see the thread where David kindly + patiently goes in detail, I think I am at a (pre-examining algorithm itself) broad understanding of this.I added some details of the creep issue in my other replies, hopefully that also helps!quoted
quoted
the max_ptes_none value will be treated as 0 for anything other than PMD collapse, or in the case of 511. Or will the max_ptes_none only work for mTHP collapse when it is 0.511 implies always collapse zero/none, 0 implies never, as I understand it.0 implies only collapse if a given mTHP size is fully occupied by present PTES. Since we start at PMD and work our way down we will always end up with a PMD range of fully occupied mTHPs, potentially of all different sizes.
Yeah this was my understanding, I mean terminology is tricky here (+ I am probably not being entirely clear tbh), so I mean less so '0 means no collapse' but rather '0 means no collapse of zero/none' but of course can allow for collapse of present PTEs (within the same VMA).
quoted
quoted
static unsigned int collapse_max_ptes_none(unsigned int order, bool full_scan) { unsigned int max_ptes_none; /* ignore max_ptes_none limits */ if (full_scan) return HPAGE_PMD_NR - 1; if (order == HPAGE_PMD_ORDER) return khugepaged_max_ptes_none; if (khugepaged_max_ptes_none != HPAGE_PMD_NR - 1) return 0; return max_ptes_none >> (HPAGE_PMD_ORDER - order); } Here's the implementation for the first approach, looks like Baolin was able to catch up and beat me to the other solution while I was mulling over the thread lolBroadly looks similar to Baolin's, I made some suggestions over there though!Thanks! They are both based on my current collapse_max_ptes_none! Just a slight difference in behavior surrounding the two suggested solutions by David.
Yes which is convenient as it's less delta for you!
I will still have to implement the logic for not attempting mTHP collapses if it is any intermediate value (i.e. the function returns -EINVAL).
Ack
-- Nicoquoted
quoted
Cheers, -- NicoThanks, Lorenzo
Cheers, Lorenzo