All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Johannes Weiner <hannes@cmpxchg.org>, Barry Song <baohua@kernel.org>
Cc: Joanne Koong <joannelkoong@gmail.com>,
	akpm@linux-foundation.org, ljs@kernel.org, usama.arif@linux.dev,
	alex@ghiti.fr, ziy@nvidia.com, baolin.wang@linux.alibaba.com,
	liam@infradead.org, npache@redhat.com, ryan.roberts@arm.com,
	dev.jain@arm.com, lance.yang@linux.dev, vbabka@kernel.org,
	rppt@kernel.org, surenb@google.com, mhocko@suse.com,
	willy@infradead.org, linux-mm@kvack.org
Subject: Re: [PATCH v1 2/2] mm/memory: add anonymous mTHP folios to deferred split list
Date: Tue, 4 Aug 2026 16:11:02 +0200	[thread overview]
Message-ID: <65b4baa3-77bd-4d2c-a128-9884f858e63d@kernel.org> (raw)
In-Reply-To: <anHxPU17Ui4MTcCb@cmpxchg.org>

On 8/4/26 16:03, Johannes Weiner wrote:
> On Tue, Aug 04, 2026 at 10:03:14AM +0800, Barry Song wrote:
>> On Tue, Aug 4, 2026 at 8:48 AM Johannes Weiner <hannes@cmpxchg.org> wrote:
>>>
>> [...]
>>>
>>> I am very confused. Did you not see my proposal above?
>>>
>>> Why not this?
>>
>> Hi Johannes,
>>
>> For arm64, if the base page size is 64KB, a PMD would be 512MB,
>> and PMD-1 would be 256MB. Usama mentioned 2MB, which is just
>> order-5, not PMD-1 on arm64.
>>
>> BTW, I assume khugepaged_max_ptes_none is intended for collapse,
>> not splitting. I am a bit concerned that reusing it for this
>> purpose would be quite disruptive.
> 
> It already is:
> 
> static bool thp_underused(struct folio *folio)
> {
> 	int num_zero_pages = 0, num_filled_pages = 0;
> 	int i;
> 
> 	if (khugepaged_max_ptes_none == HPAGE_PMD_NR - 1)
> 		return false;
> 
> 	if (folio_contain_hwpoisoned_page(folio))
> 		return false;
> 
> 	for (i = 0; i < folio_nr_pages(folio); i++) {
> 		if (pages_identical(folio_page(folio, i), ZERO_PAGE(0))) {
> 			if (++num_zero_pages > khugepaged_max_ptes_none)
> 				return true;
> 		} else {
> 			/*
> 			 * Another path for early exit once the number
> 			 * of non-zero filled pages exceeds threshold.
> 			 */
> 			if (++num_filled_pages >= HPAGE_PMD_NR - khugepaged_max_ptes_none)
> 				return false;
> 		}
> 	}
> 	return false;
> }
> 
> That's ABI and setups are relying on it.
> 
> All I'm proposing is to only queue pages that the shrinker would
> actually split under currently existing rules. That's a mostly
> transparent optimization, not a new policy.

I yet have to reply to some stuff here (sorry, it's a mess :( ), but one thing
that annoyed me right from the start is that we have:

static bool split_underused_thp = true;

But the default khugepaged settings actually don't result in any splits.

I think it would already be a big improvement to not default to adding all pages
in default setups.

When we last discussed changing that, one concern raised in the past was that
changing the khugepaged setting later would then not be able to reclaim pages
allocated up to that point.

When someone actually changes khugepaged settings such that the underused
shrinker would get active, could we walk the LRU and add all eligible anon THPs
to the underused shrinker? We could remember "already scanned for underused" per
THP, but maybe we could avoid that initially.

-- 
Cheers,

David


  reply	other threads:[~2026-08-04 14:11 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-07 20:17 [PATCH v1 0/2] mm: split underused anonymous mTHP folios Joanne Koong
2026-07-07 20:17 ` [PATCH v1 1/2] mm/huge_memory: extend thp_underused() to " Joanne Koong
2026-07-08  4:03   ` Joanne Koong
2026-07-07 20:17 ` [PATCH v1 2/2] mm/memory: add anonymous mTHP folios to deferred split list Joanne Koong
2026-07-08  7:56   ` David Hildenbrand (Arm)
2026-07-08  9:58     ` Usama Arif
2026-07-29 12:36       ` David Hildenbrand (Arm)
2026-07-29 13:43         ` Usama Arif
2026-07-29 14:02           ` Usama Arif
2026-07-30 13:28           ` David Hildenbrand (Arm)
2026-07-08 17:52     ` Joanne Koong
2026-07-29 12:38       ` David Hildenbrand (Arm)
2026-07-29 15:04         ` Johannes Weiner
2026-07-30 13:46           ` David Hildenbrand (Arm)
2026-07-30 15:37             ` Johannes Weiner
2026-07-30 21:31               ` Barry Song
2026-07-30 23:32                 ` Barry Song
2026-07-31 15:04                 ` Johannes Weiner
2026-08-01  7:33                   ` Barry Song
2026-08-03 14:45                     ` Johannes Weiner
2026-08-03 21:20                       ` Barry Song
2026-08-04  0:48                         ` Johannes Weiner
2026-08-04  2:03                           ` Barry Song
2026-08-04 14:03                             ` Johannes Weiner
2026-08-04 14:11                               ` David Hildenbrand (Arm) [this message]
2026-08-04 18:54                                 ` Johannes Weiner
2026-08-04 14:39                             ` Usama Arif
2026-08-04 22:07                               ` Barry Song
2026-08-04 23:26                                 ` Joanne Koong
2026-07-08  7:46 ` [PATCH v1 0/2] mm: split underused anonymous mTHP folios David Hildenbrand (Arm)
2026-07-08 18:19   ` Joanne Koong
2026-07-30 13:52     ` David Hildenbrand (Arm)
2026-07-30 23:10       ` Joanne Koong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=65b4baa3-77bd-4d2c-a128-9884f858e63d@kernel.org \
    --to=david@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alex@ghiti.fr \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=dev.jain@arm.com \
    --cc=hannes@cmpxchg.org \
    --cc=joannelkoong@gmail.com \
    --cc=lance.yang@linux.dev \
    --cc=liam@infradead.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=npache@redhat.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=surenb@google.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=willy@infradead.org \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.