mm: memcg/slab: use a single set of kmem_caches for all allocations
Instead of having two sets of kmem_caches: one for system-wide and non-accounted allocations and the second one shared by all accounted allocations, we can use just one. The idea is simple: space for obj_cgroup metadata can be allocated on demand and filled only for accounted allocations. It allows to remove a bunch of code which is required to handle kmem_cache clones for accounted allocations. There is no more need to create them, accumulate statistics, propagate attributes, etc. It's a quite significant simplification. Also, because the total number of slab_caches is reduced almost twice (not all kmem_caches have a memcg clone), some additional memory savings are expected. On my devvm it additionally saves about 3.5% of slab memory. [guro@fb.com: fix build on MIPS] Link: http://lkml.kernel.org/r/20200717214810.3733082-1-guro@fb.com Suggested-by:Johannes Weiner <hannes@cmpxchg.org> Signed-off-by:
Roman Gushchin <guro@fb.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Reviewed-by:
Vlastimil Babka <vbabka@suse.cz> Reviewed-by:
Shakeel Butt <shakeelb@google.com> Cc: Christoph Lameter <cl@linux.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Tejun Heo <tj@kernel.org> Cc: Naresh Kamboju <naresh.kamboju@linaro.org> Link: http://lkml.kernel.org/r/20200623174037.3951353-18-guro@fb.com Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
Showing
- include/linux/slab.h 0 additions, 2 deletionsinclude/linux/slab.h
- include/linux/slab_def.h 0 additions, 3 deletionsinclude/linux/slab_def.h
- include/linux/slub_def.h 0 additions, 10 deletionsinclude/linux/slub_def.h
- mm/memcontrol.c 24 additions, 1 deletionmm/memcontrol.c
- mm/slab.c 3 additions, 38 deletionsmm/slab.c
- mm/slab.h 42 additions, 152 deletionsmm/slab.h
- mm/slab_common.c 5 additions, 225 deletionsmm/slab_common.c
- mm/slub.c 4 additions, 159 deletionsmm/slub.c
Loading
Please register or sign in to comment