From: "David Hildenbrand (Red Hat)" <david@kernel.org>
To: Wei Yang <richard.weiyang@gmail.com>
Cc: Vernon Yang <vernon2gm@gmail.com>,
akpm@linux-foundation.org, lorenzo.stoakes@oracle.com,
ziy@nvidia.com, dev.jain@arm.com, baohua@kernel.org,
lance.yang@linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Vernon Yang <yanglincheng@kylinos.cn>
Subject: Re: [PATCH v2 4/4] mm: khugepaged: set to next mm direct when mm has MMF_DISABLE_THP_COMPLETELY
Date: Wed, 31 Dec 2025 13:21:12 +0100 [thread overview]
Message-ID: <9c3b81da-f0e8-4652-8900-05593e124c26@kernel.org> (raw)
In-Reply-To: <20251231025112.uzlgrs3dgbyzul2x@master>
On 12/31/25 03:51, Wei Yang wrote:
> On Tue, Dec 30, 2025 at 09:03:23PM +0100, David Hildenbrand (Red Hat) wrote:
>> On 12/29/25 06:51, Vernon Yang wrote:
>>> When an mm with the MMF_DISABLE_THP_COMPLETELY flag is detected during
>>> scanning, directly set khugepaged_scan.mm_slot to the next mm_slot,
>>> reduce redundant operation.
>>>
>>> Signed-off-by: Vernon Yang <yanglincheng@kylinos.cn>
>>> ---
>>> mm/khugepaged.c | 9 +++++++--
>>> 1 file changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
>>> index 2b3685b195f5..72be87ef384b 100644
>>> --- a/mm/khugepaged.c
>>> +++ b/mm/khugepaged.c
>>> @@ -2439,6 +2439,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
>>> cond_resched();
>>> if (unlikely(hpage_collapse_test_exit_or_disable(mm))) {
>>> + vma = NULL;
>>> progress++;
>>> break;
>>> }
>>
>> I don't understand why we need changes at all.
>>
>> The code is
>>
>> mm = slot->mm;
>> /*
>> * Don't wait for semaphore (to avoid long wait times). Just move to
>> * the next mm on the list.
>> */
>> vma = NULL;
>> if (unlikely(!mmap_read_trylock(mm)))
>> goto breakouterloop_mmap_lock;
>>
>> progress++;
>> if (unlikely(hpage_collapse_test_exit_or_disable(mm)))
>> goto breakouterloop;
>>
>> ...
>>
>> So we'll go straight to breakouterloop with vma=NULL.
>>
>> Do you want to optimize for skipping the MM if the flag gets toggled
>> while we are scanning that MM?
>>
>> Is that really something we should be worrying about?
>>
>> Also, why can't we simply do a
>>
>> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
>> index 97d1b2824386f..af8481d4b0f4e 100644
>> --- a/mm/khugepaged.c
>> +++ b/mm/khugepaged.c
>> @@ -2516,7 +2516,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
>> * Release the current mm_slot if this mm is about to die, or
>> * if we scanned all vmas of this mm.
>> */
>> - if (hpage_collapse_test_exit(mm) || !vma) {
>> + if (hpage_collapse_test_exit_or_disable(mm) || !vma) {
>> /*
>> * Make sure that if mm_users is reaching zero while
>> * khugepaged runs here, khugepaged_exit will find
>>
>
> This one looks better.
>
> But the sad thing is we can't remove this mm from scan list, since user may
> toggle this flag later.
In theory we could readd it to the list once the flag gets toggled.
In fact, we could remove it from the list once we set the flag. But not
sure if that ends up any cleaner (dealing with races? not sure).
--
Cheers
David
next prev parent reply other threads:[~2025-12-31 12:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-29 5:51 [PATCH v2 0/4] Improve khugepaged scan logic Vernon Yang
2025-12-29 5:51 ` [PATCH v2 1/4] mm: khugepaged: add trace_mm_khugepaged_scan event Vernon Yang
2025-12-29 8:09 ` Barry Song
2025-12-29 5:51 ` [PATCH v2 2/4] mm: khugepaged: just skip when the memory has been collapsed Vernon Yang
2025-12-30 15:46 ` Vernon Yang
2025-12-29 5:51 ` [PATCH v2 3/4] mm: khugepaged: set VM_NOHUGEPAGE flag when MADV_COLD/MADV_FREE Vernon Yang
2025-12-29 8:20 ` Barry Song
2025-12-29 8:26 ` Dev Jain
2025-12-30 15:30 ` Vernon Yang
2025-12-30 19:54 ` David Hildenbrand (Red Hat)
2025-12-31 12:13 ` Vernon Yang
2025-12-31 12:19 ` David Hildenbrand (Red Hat)
2025-12-29 5:51 ` [PATCH v2 4/4] mm: khugepaged: set to next mm direct when mm has MMF_DISABLE_THP_COMPLETELY Vernon Yang
2025-12-30 20:03 ` David Hildenbrand (Red Hat)
2025-12-31 2:51 ` Wei Yang
2025-12-31 12:21 ` David Hildenbrand (Red Hat) [this message]
2025-12-31 10:57 ` Vernon Yang
2025-12-29 10:21 ` [syzbot ci] Re: Improve khugepaged scan logic syzbot ci
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=9c3b81da-f0e8-4652-8900-05593e124c26@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=dev.jain@arm.com \
--cc=lance.yang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=richard.weiyang@gmail.com \
--cc=vernon2gm@gmail.com \
--cc=yanglincheng@kylinos.cn \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox