Re: [PATCH v2 4/4] mm/mglru: fix anon-only reclaim evicting file pages when swappiness=max

From: Qi Zheng

Date: Sun Jul 19 2026 - 22:49:38 EST




On 7/18/26 9:43 PM, Barry Song wrote:
On Sat, Jul 18, 2026 at 5:54 PM Ridong Chen <ridong.chen@xxxxxxxxx> wrote:

From: Ridong Chen <chenridong@xxxxxxxxxx>

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. ;)



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@xxxxxxxxx

Fixes: 68a1436bde00 ("mm: add swappiness=max arg to memory.reclaim for only anon reclaim")
Signed-off-by: Ridong Chen <chenridong@xxxxxxxxxx>
---
mm/vmscan.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)


Overall, this looks good to me.

Acked-by: Qi Zheng <qi.zheng@xxxxxxxxx>

Thanks,
Qi