Skip to content
Snippets Groups Projects
  • Abel Wu's avatar
    e401630f
    net-memcg: Fix scope of sockmem pressure indicators · e401630f
    Abel Wu authored and Frieder Schrempf's avatar Frieder Schrempf committed
    
    [ Upstream commit ac8a5296 ]
    
    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: 8e8ae645 ("mm: memcontrol: hook up vmpressure to socket pressure")
    Signed-off-by: default avatarAbel Wu <wuyun.abel@bytedance.com>
    Acked-by: default avatarShakeel Butt <shakeelb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    e401630f
    History
    net-memcg: Fix scope of sockmem pressure indicators
    Abel Wu authored and Frieder Schrempf's avatar Frieder Schrempf committed
    
    [ Upstream commit ac8a5296 ]
    
    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: 8e8ae645 ("mm: memcontrol: hook up vmpressure to socket pressure")
    Signed-off-by: default avatarAbel Wu <wuyun.abel@bytedance.com>
    Acked-by: default avatarShakeel Butt <shakeelb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>