net-memcg: Fix scope of sockmem pressure indicators
authorAbel Wu <wuyun.abel@bytedance.com>
Mon, 14 Aug 2023 07:09:11 +0000 (15:09 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Aug 2023 11:21:32 +0000 (12:21 +0100)
commitac8a52962164a50e693fa021d3564d7745b83a7f
tree8cafe2afe9f3308bf2dda05e24f8eb7bdf315420
parent7fd034bce6d276353a4e70c516789dfe6b2c32ae
net-memcg: Fix scope of sockmem pressure indicators

Now there are two indicators of socket memory pressure sit inside
struct mem_cgroup, socket_pressure and tcpmem_pressure, indicating
memory reclaim pressure in memcg->memory and ->tcpmem respectively.

When in legacy mode (cgroupv1), the socket memory is charged into
->tcpmem which is independent of ->memory, so socket_pressure has
nothing to do with socket's pressure at all. Things could be worse
by taking socket_pressure into consideration in legacy mode, as a
pressure in ->memory can lead to premature reclamation/throttling
in socket.

While for the default mode (cgroupv2), the socket memory is charged
into ->memory, and ->tcpmem/->tcpmem_pressure are simply not used.

So {socket,tcpmem}_pressure are only used in default/legacy mode
respectively for indicating socket memory pressure. This patch fixes
the pieces of code that make mixed use of both.

Fixes: 8e8ae645249b ("mm: memcontrol: hook up vmpressure to socket pressure")
Signed-off-by: Abel Wu <wuyun.abel@bytedance.com>
Acked-by: Shakeel Butt <shakeelb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/memcontrol.h
mm/vmpressure.c