From: Qi Zheng <qi.zheng@linux.dev>
To: Harry Yoo <harry.yoo@oracle.com>
Cc: hannes@cmpxchg.org, hughd@google.com, mhocko@suse.com,
roman.gushchin@linux.dev, shakeel.butt@linux.dev,
muchun.song@linux.dev, david@redhat.com,
lorenzo.stoakes@oracle.com, ziy@nvidia.com,
baolin.wang@linux.alibaba.com, Liam.Howlett@oracle.com,
npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com,
baohua@kernel.org, lance.yang@linux.dev,
akpm@linux-foundation.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
Qi Zheng <zhengqi.arch@bytedance.com>
Subject: Re: [PATCH v5 4/4] mm: thp: reparent the split queue during memcg offline
Date: Tue, 21 Oct 2025 14:21:55 +0800 [thread overview]
Message-ID: <3acbf7df-b890-4679-bbbe-959bd45fdef3@linux.dev> (raw)
In-Reply-To: <aPcjnKAapap5jrK-@hyeyoo>
On 10/21/25 2:09 PM, Harry Yoo wrote:
> On Wed, Oct 15, 2025 at 02:35:33PM +0800, Qi Zheng wrote:
>> From: Qi Zheng <zhengqi.arch@bytedance.com>
>>
>> Similar to list_lru, the split queue is relatively independent and does
>> not need to be reparented along with objcg and LRU folios (holding
>> objcg lock and lru lock). So let's apply the similar mechanism as list_lru
>> to reparent the split queue separately when memcg is offine.
>>
>> This is also a preparation for reparenting LRU folios.
>>
>> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
>> Acked-by: Zi Yan <ziy@nvidia.com>
>> Reviewed-by: Muchun Song <muchun.song@linux.dev>
>> Acked-by: David Hildenbrand <david@redhat.com>
>> Acked-by: Shakeel Butt <shakeel.butt@linux.dev>
>> ---
>
> Looks good to me,
> Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Thanks.
>
> with a question:
>
>> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
>> index e850bc10da3e2..9323039418201 100644
>> --- a/mm/huge_memory.c
>> +++ b/mm/huge_memory.c
>> @@ -1117,8 +1117,19 @@ static struct deferred_split *split_queue_lock(int nid, struct mem_cgroup *memcg
>> {
>> struct deferred_split *queue;
>>
>> +retry:
>> queue = memcg_split_queue(nid, memcg);
>> spin_lock(&queue->split_queue_lock);
>> + /*
>> + * There is a period between setting memcg to dying and reparenting
>> + * deferred split queue, and during this period the THPs in the deferred
>> + * split queue will be hidden from the shrinker side.
>> + */
>
> You mean it will be hidden if the shrinker bit is not set for the node
> in the parent memcg, right?
Look at the following situation:
CPU 0 CPU 1
----- -----
set CSS_DYING
deferred_split_scan
/*
* See CSS_DYING, and return the parent
* memcg's ds_queue. But the pages on the
* child memcg's ds_queue has not yet been
* reparented to the parent memcg, that is,
* it is hidden.
*/
--> ds_queue = split_queue_lock_irqsave()
reparent_deferred_split_queue
Thanks,
Qi
>
next prev parent reply other threads:[~2025-10-21 6:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-15 6:35 [PATCH v5 0/4] reparent the THP split queue Qi Zheng
2025-10-15 6:35 ` [PATCH v5 1/4] mm: thp: replace folio_memcg() with folio_memcg_charged() Qi Zheng
2025-10-15 6:35 ` [PATCH v5 2/4] mm: thp: introduce folio_split_queue_lock and its variants Qi Zheng
2025-10-15 6:35 ` [PATCH v5 3/4] mm: thp: use folio_batch to handle THP splitting in deferred_split_scan() Qi Zheng
2025-10-17 0:46 ` Wei Yang
2025-10-17 2:33 ` Qi Zheng
2025-10-17 5:38 ` Harry Yoo
2025-11-06 14:52 ` Wei Yang
2025-11-07 2:29 ` Andrew Morton
2025-11-07 2:52 ` Qi Zheng
2025-11-07 2:51 ` Qi Zheng
2025-11-07 2:59 ` Wei Yang
2025-10-15 6:35 ` [PATCH v5 4/4] mm: thp: reparent the split queue during memcg offline Qi Zheng
2025-10-21 6:09 ` Harry Yoo
2025-10-21 6:21 ` Qi Zheng [this message]
2025-10-21 9:29 ` Harry Yoo
2025-10-21 9:43 ` Qi Zheng
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=3acbf7df-b890-4679-bbbe-959bd45fdef3@linux.dev \
--to=qi.zheng@linux.dev \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=cgroups@vger.kernel.org \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=hannes@cmpxchg.org \
--cc=harry.yoo@oracle.com \
--cc=hughd@google.com \
--cc=lance.yang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=npache@redhat.com \
--cc=roman.gushchin@linux.dev \
--cc=ryan.roberts@arm.com \
--cc=shakeel.butt@linux.dev \
--cc=zhengqi.arch@bytedance.com \
--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.