• R
    mm: memcg/slab: use a single set of kmem_caches for all accounted allocations · 9855609b
    Roman Gushchin 提交于
    This is fairly big but mostly red patch, which makes all accounted slab
    allocations use a single set of kmem_caches instead of creating a separate
    set for each memory cgroup.
    
    Because the number of non-root kmem_caches is now capped by the number of
    root kmem_caches, there is no need to shrink or destroy them prematurely.
    They can be perfectly destroyed together with their root counterparts.
    This allows to dramatically simplify the management of non-root
    kmem_caches and delete a ton of code.
    
    This patch performs the following changes:
    1) introduces memcg_params.memcg_cache pointer to represent the
       kmem_cache which will be used for all non-root allocations
    2) reuses the existing memcg kmem_cache creation mechanism
       to create memcg kmem_cache on the first allocation attempt
    3) memcg kmem_caches are named <kmemcache_name>-memcg,
       e.g. dentry-memcg
    4) simplifies memcg_kmem_get_cache() to just return memcg kmem_cache
       or schedule it's creation and return the root cache
    5) removes almost all non-root kmem_cache management code
       (separate refcounter, reparenting, shrinking, etc)
    6) makes slab debugfs to display root_mem_cgroup css id and never
       show :dead and :deact flags in the memcg_slabinfo attribute.
    
    Following patches in the series will simplify the kmem_cache creation.
    Signed-off-by: NRoman Gushchin <guro@fb.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Reviewed-by: NVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: NShakeel Butt <shakeelb@google.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Tejun Heo <tj@kernel.org>
    Link: http://lkml.kernel.org/r/20200623174037.3951353-13-guro@fb.comSigned-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    9855609b
slab_common.c 34.9 KB