All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ridong Chen <ridong.chen@linux.dev>
To: Qi Zheng <qi.zheng@linux.dev>, Barry Song <baohua@kernel.org>
Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, david@kernel.org,
	mhocko@kernel.org, shakeel.butt@linux.dev, ljs@kernel.org,
	kasong@tencent.com, axelrasmussen@google.com, yuanchu@google.com,
	weixugc@google.com, hezhongkun.hzk@bytedance.com,
	muchun.song@linux.dev, dave@stgolabs.net,
	roman.gushchin@linux.dev, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, Ridong Chen <chenridong@xiaomi.com>
Subject: Re: [PATCH v2 4/4] mm/mglru: fix anon-only reclaim evicting file pages when swappiness=max
Date: Mon, 20 Jul 2026 14:03:32 +0800	[thread overview]
Message-ID: <dbaa0a54-cf81-4644-b47b-b60a2083cb30@linux.dev> (raw)
In-Reply-To: <c9ad9052-4f9e-42a5-a6f6-17877aad18e4@linux.dev>



On 7/20/2026 10:48 AM, Qi Zheng wrote:
> 
> 
> On 7/18/26 9:43 PM, Barry Song wrote:
>> On Sat, Jul 18, 2026 at 5:54 PM Ridong Chen <ridong.chen@linux.dev> 
>> wrote:
>>>
>>> From: Ridong Chen <chenridong@xiaomi.com>
>>>
>>> The previous patch fixes this issue for the traditional LRU, which also
>>> exists in MGLRU [1]. Fix this by checking whether swappiness is
>>> SWAPPINESS_ANON_ONLY in get_swappiness() first, and returning 0 from
>>> get_nr_to_scan() when swappiness is SWAPPINESS_ANON_ONLY and anon pages
>>> cannot be reclaimed, to avoid useless work.
>>
>> Is this intended to avoid unnecessary work, or to prevent file folios
>> from being reclaimed incorrectly?
> 
> Based on the test results below, it seems primarily intended to prevent
> file pages from being mistakenly reclaimed. Also, bailing out early in
> the SWAPPINESS_ANON_ONLY + !can_reclaim_anon_pages case is to avoid
> unnecessary work.
> 
> Hi Ridong, perhaps the commit message could be clearer. ;)
> 

Thanks for the feedback. Let me clarify:

When SWAPPINESS_ANON_ONLY is set, get_swappiness() returns the 
swappiness value, and get_type_to_scan() can always return LRU_GEN_ANON. 
So if anonymous pages cannot be reclaimed, we bail out early to avoid 
unnecessary work. In that case, get_nr_to_scan() just returns 0.

If we do not return early in get_nr_to_scan() under the 
SWAPPINESS_ANON_ONLY + !can_reclaim_anon_pages condition, then in 
isolate_folios(), it may fall back to scanning file pages, but this only 
happens when scanned = 0, which is not the usual case.


```
shrink_one
try_to_shrink_lruvec
   get_swappiness // return SWAPPINESS_ANON_ONLY if swappiness=max
   get_nr_to_scan // return 0 if anon can't be reclaimed, skip
   evict_folios
     isolate_folios // !scanned falling back to anyther type if !scanned
```

I'll update the commit message to make this clearer in the next version.

>>
>>>
>>> The test result:
>>> Before fix:
>>>
>>>    # cat /sys/kernel/mm/lru_gen/enabled
>>>    0x0007
>>>    # cat memory.stat
>>>    anon 204800
>>>    file 67108864
>>>    ...
>>>    pgsteal_proactive 0
>>>    pgscan_proactive 0
>>>
>>>    # echo "64M swappiness=max" > memory.reclaim
>>>    # cat memory.stat
>>>    anon 208896
>>>    file 0
>>>    ...
>>>    pgsteal_proactive 16384
>>>    pgscan_proactive 16384
>>>
>>> After fix:
>>>
>>>    # cat memory.stat
>>>    anon 188416
>>>    file 67215360
>>>    kernel 1970176
>>>    ...
>>>    pgsteal_proactive 0
>>>    pgscan_proactive 0
>>>
>>>    # echo "64M swappiness=max" > memory.reclaim
>>>    -bash: echo: write error: Resource temporarily unavailable
>>>    # cat memory.stat
>>>    anon 204800
>>>    file 67215360
>>>    ...
>>>    pgsteal_proactive 0
>>>    pgscan_proactive 0
>>>
>>> [1] https://sashiko.dev/#/patchset/20260717113300.214717-1- 
>>> ridong.chen@linux.dev
>>>
>>> Fixes: 68a1436bde00 ("mm: add swappiness=max arg to memory.reclaim 
>>> for only anon reclaim")
>>> Signed-off-by: Ridong Chen <chenridong@xiaomi.com>
>>> ---
>>>   mm/vmscan.c | 14 +++++++++++++-
>>>   1 file changed, 13 insertions(+), 1 deletion(-)
>>>
> 
> Overall, this looks good to me.
> 
> Acked-by: Qi Zheng <qi.zheng@linux.dev>
> 
> Thanks,
> Qi
> 
> 

-- 
Best regards
Ridong



      reply	other threads:[~2026-07-20  6:03 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-18  9:52 [PATCH v2 0/4] mm/vmscan: fix swappiness=max and clean up per-node proactive reclaim Ridong Chen
2026-07-18  9:52 ` [PATCH v2 1/4] mm/vmscan: fix anon-only reclaim evicting file pages when swappiness=max Ridong Chen
2026-07-18 13:34   ` Barry Song
2026-07-20  4:42     ` Ridong Chen
2026-07-21  7:45       ` Barry Song
2026-07-20  2:27   ` Qi Zheng
2026-07-18  9:52 ` [PATCH v2 2/4] mm: vmscan: propagate real error code from per-node proactive reclaim Ridong Chen
2026-07-20  2:32   ` Qi Zheng
2026-07-21  7:32   ` Barry Song
2026-07-18  9:52 ` [PATCH v2 3/4] mm: vmscan: drop unused gfp_mask parameter from __node_reclaim() Ridong Chen
2026-07-18 13:12   ` Barry Song
2026-07-20  2:34   ` Qi Zheng
2026-07-18  9:52 ` [PATCH v2 4/4] mm/mglru: fix anon-only reclaim evicting file pages when swappiness=max Ridong Chen
2026-07-18 13:43   ` Barry Song
2026-07-20  2:48     ` Qi Zheng
2026-07-20  6:03       ` Ridong Chen [this message]

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=dbaa0a54-cf81-4644-b47b-b60a2083cb30@linux.dev \
    --to=ridong.chen@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=axelrasmussen@google.com \
    --cc=baohua@kernel.org \
    --cc=chenridong@xiaomi.com \
    --cc=dave@stgolabs.net \
    --cc=david@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=hezhongkun.hzk@bytedance.com \
    --cc=kasong@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@kernel.org \
    --cc=muchun.song@linux.dev \
    --cc=qi.zheng@linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=weixugc@google.com \
    --cc=yuanchu@google.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.