Re: [PATCH v10 00/13] khugepaged: mTHP support
From: Lorenzo Stoakes <hidden>
Date: 2025-08-26 10:56:34
Also in:
linux-doc, linux-mm, lkml
On Fri, Aug 22, 2025 at 09:03:41PM +0530, Dev Jain wrote:
On 22/08/25 8:19 pm, Lorenzo Stoakes wrote:quoted
On Fri, Aug 22, 2025 at 04:10:35PM +0200, David Hildenbrand wrote:quoted
quoted
quoted
Once could also easily support the value 255 (HPAGE_PMD_NR / 2- 1), but not sure if we have to add that for now.Yeah not so sure about this, this is a 'just have to know' too, and yes you might add it to the docs, but people are going to be mightily confused, esp if it's a calculated value. I don't see any other way around having a separate tunable if we don't just have something VERY simple like on/off.Yeah, not advocating that we add support for other values than 0/511, really.Yeah I'm fine with 0/511.quoted
quoted
Also the mentioned issue sounds like something that needs to be fixed elsewhere honestly in the algorithm used to figure out mTHP ranges (I may be wrong - and happy to stand corrected if this is somehow inherent, but reallly feels that way).I think the creep is unavoidable for certain values. If you have the first two pages of a PMD area populated, and you allow for at least half of the #PTEs to be non/zero, you'd collapse first a order-2 folio, then and order-3 ... until you reached PMD order.Feels like we should be looking at this in reverse? What's the largest, then next largest, then etc.? Surely this is the sensible way of doing it?What David means to say is, for example, suppose all orders are enabled, and we fail to collapse for order-9, then order-8, then order-7, and so on, *only* because the distribution of ptes did not obey the scaled max_ptes_none. Let order-4 collapse succeed.
Ah so it is the overhead of this that's the problem? All roads lead to David's suggestion imo.
quoted
By having 0/511 we can really simplify the 'scaling' logic too which would be fantastic! :)FWIW here was my implementation of this thing, for ease of everyone: https://lore.kernel.org/all/20250211111326.14295-17-dev.jain@arm.com/ (local)
That's fine, but I really think we should just replace all this stuff with a boolean, and change the interface to max_ptes to set boolean if 511, or clear if 0. Cheers, Lorenzo