]> git.baikalelectronics.ru Git - kernel.git/commit
mm: memcg: convert vmstat slab counters to bytes
authorRoman Gushchin <guro@fb.com>
Fri, 7 Aug 2020 06:20:39 +0000 (23:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 7 Aug 2020 18:33:24 +0000 (11:33 -0700)
commit263dc7abc64733a8a5d7a46dce2b049a6498de64
tree36e68f295f165e31a4d5f2e8190f2cca96ddaa8b
parentecbfdaa490de535f0bb1b7152f4a007a9e995b50
mm: memcg: convert vmstat slab counters to bytes

In order to prepare for per-object slab memory accounting, convert
NR_SLAB_RECLAIMABLE and NR_SLAB_UNRECLAIMABLE vmstat items to bytes.

To make it obvious, rename them to NR_SLAB_RECLAIMABLE_B and
NR_SLAB_UNRECLAIMABLE_B (similar to NR_KERNEL_STACK_KB).

Internally global and per-node counters are stored in pages, however memcg
and lruvec counters are stored in bytes.  This scheme may look weird, but
only for now.  As soon as slab pages will be shared between multiple
cgroups, global and node counters will reflect the total number of slab
pages.  However memcg and lruvec counters will be used for per-memcg slab
memory tracking, which will take separate kernel objects in the account.
Keeping global and node counters in pages helps to avoid additional
overhead.

The size of slab memory shouldn't exceed 4Gb on 32-bit machines, so it
will fit into atomic_long_t we use for vmstats.

Signed-off-by: Roman Gushchin <guro@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Christoph Lameter <cl@linux.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/20200623174037.3951353-4-guro@fb.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
13 files changed:
drivers/base/node.c
fs/proc/meminfo.c
include/linux/mmzone.h
kernel/power/snapshot.c
mm/memcontrol.c
mm/oom_kill.c
mm/page_alloc.c
mm/slab.h
mm/slab_common.c
mm/slob.c
mm/slub.c
mm/vmscan.c
mm/workingset.c