Re: [PATCH -v4 2/2] mm: vmscan: fix node reclaim ignoring swappiness parameter
From: Shakeel Butt
Date: Fri Jul 24 2026 - 12:07:01 EST
On Thu, Jul 23, 2026 at 11:24:34AM +0800, Ridong wrote:
> From: Ridong Chen <chenridong@xxxxxxxxxx>
>
> sc_swappiness() had two separate definitions depending on
> CONFIG_MEMCG. The !CONFIG_MEMCG variant simply returned
> vm_swappiness, ignoring the proactive_swappiness value passed
> through scan_control. This caused the swappiness parameter
> written to /sys/devices/system/node/nodeX/reclaim to have no
> effect when CONFIG_MEMCG is disabled.
>
> Fix this by consolidating sc_swappiness() into a single definition
> that checks sc->proactive_swappiness first, then falls back to
> mem_cgroup_swappiness() which already handles both CONFIG_MEMCG
> and !CONFIG_MEMCG.
>
> Before fix (swappiness=max ignored, mostly file pages reclaimed):
>
> # cat /proc/sys/vm/swappiness
> 60
> # cat /proc/vmstat | grep pgsteal
> pgsteal_kswapd 0
> pgsteal_direct 0
> pgsteal_khugepaged 0
> pgsteal_proactive 1840
> pgsteal_anon 25
> pgsteal_file 1815
> # echo "64M swappiness=max" > /sys/devices/system/node/node0/reclaim
> # cat /proc/vmstat | grep pgsteal
> pgsteal_kswapd 0
> pgsteal_direct 0
> pgsteal_khugepaged 0
> pgsteal_proactive 18013
> pgsteal_anon 337
> pgsteal_file 17676
>
> After fix (swappiness=max honored, anon pages reclaimed as expected):
>
> # cat /proc/vmstat | grep pgsteal
> pgsteal_kswapd 0
> pgsteal_direct 0
> pgsteal_khugepaged 0
> pgsteal_proactive 0
> pgsteal_anon 0
> pgsteal_file 0
> # echo "64M swappiness=max" > /sys/devices/system/node/node0/reclaim
> # cat /proc/vmstat | grep pgsteal
> pgsteal_kswapd 0
> pgsteal_direct 0
> pgsteal_khugepaged 0
> pgsteal_proactive 16283
> pgsteal_anon 16283
> pgsteal_file 0
>
> Cc: stable@xxxxxxxxxxxxxxx # 6.17+
> Fixes: b980077899ea ("mm: introduce per-node proactive reclaim interface")
> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>
> Reviewed-by: Barry Song <baohua@xxxxxxxxxx>
> Acked-by: Qi Zheng <qi.zheng@xxxxxxxxx>
> Tested-by: Song Hu <husong@xxxxxxxxxx>
> Reviewed-by: Song Hu <husong@xxxxxxxxxx>
> Signed-off-by: Ridong Chen <chenridong@xxxxxxxxxx>
Acked-by: Shakeel Butt <shakeel.butt@xxxxxxxxx>