• Shakeel Butt's avatar
    mm: memcg: add swapcache stat for memcg v2 · b6038942
    Shakeel Butt authored
    This patch adds swapcache stat for the cgroup v2.  The swapcache
    represents the memory that is accounted against both the memory and the
    swap limit of the cgroup.  The main motivation behind exposing the
    swapcache stat is for enabling users to gracefully migrate from cgroup
    v1's memsw counter to cgroup v2's memory and swap counters.
    
    Cgroup v1's memsw limit allows users to limit the memory+swap usage of a
    workload but without control on the exact proportion of memory and swap.
    Cgroup v2 provides separate limits for memory and swap which enables more
    control on the exact usage of memory and swap individually for the
    workload.
    
    With some little subtleties, the v1's memsw limit can be switched with the
    sum of the v2's memory and swap limits.  However the alternative for memsw
    usage is not yet available in cgroup v2.  Exposing per-cgroup swapcache
    stat enables that alternative.  Adding the memory usage and swap usage and
    subtracting the swapcache will approximate the memsw usage.  This will
    help in the transparent migration of the workloads depending on memsw
    usage and limit to v2' memory and swap counters.
    
    The reasons these applications are still interested in this approximate
    memsw usage are: (1) these applications are not really interested in two
    separate memory and swap usage metrics.  A single usage metric is more
    simple to use and reason about for them.
    
    (2) The memsw usage metric hides the underlying system's swap setup from
    the applications.  Applications with multiple instances running in a
    datacenter with heterogeneous systems (some have swap and some don't) will
    keep seeing a consistent view of their usage.
    
    [akpm@linux-foundation.org: fix CONFIG_SWAP=n build]
    
    Link: https://lkml.kernel.org/r/20210108155813.2914586-3-shakeelb@google.comSigned-off-by: default avatarShakeel Butt <shakeelb@google.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Reviewed-by: default avatarRoman Gushchin <guro@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b6038942
node.c 27.8 KB