[PATCH 0/8] per-memcg-per-node kmem accounting
From: Alexandre Ghiti
Date: Mon May 11 2026 - 16:24:23 EST
This series pursues the work initiated by Joshua [1]. We need kernel
memory to be accounted on a per-node basis in order to be able to
know the memcg and physical memory association.
This series takes advantage of the recent introduction of per-node
obj_cgroup [2] and makes those obj_cgroup tied to their numa node.
The bulk of the series is percpu per-node accounting: percpu
"precharges" the memcg before we know the actual location of the pages
it uses, so charging and accounting had to be split. All other kmem
users (slab, zswap, __memcg_kmem_charge_page) are straightforward
conversions (zswap support is limited in this series because Joshua
is working on it in parallel [3]).
Thanks Joshua for your early feedbacks!
[1] https://lore.kernel.org/linux-mm/20260404033844.1892595-1-joshua.hahnjy@xxxxxxxxx/
[2] https://lore.kernel.org/linux-mm/56c04b1c5d54f75ccdc12896df6c1ca35403ecc3.1772711148.git.zhengqi.arch@xxxxxxxxxxxxx/
[3] https://lore.kernel.org/linux-mm/20260311195153.4013476-1-joshua.hahnjy@xxxxxxxxx/
Alexandre Ghiti (8):
mm: memcontrol: propagate NMI slab stats to memcg vmstats
mm: percpu: charge obj_exts allocation with __GFP_ACCOUNT
mm: percpu: Split memcg charging and kmem accounting
mm: memcontrol: track MEMCG_KMEM per NUMA node
mm: memcontrol: per-node kmem accounting for page charges
mm: slab: per-node kmem accounting for slab
mm: percpu: per-node kmem accounting using local credit
mm: zswap: per-node kmem accounting for zswap/zsmalloc
include/linux/memcontrol.h | 27 +++++--
include/linux/mmzone.h | 1 +
include/linux/zsmalloc.h | 2 +
mm/memcontrol.c | 150 ++++++++++++++++++++++++++++---------
mm/percpu-internal.h | 16 +---
mm/percpu.c | 90 ++++++++++++++++++++--
mm/vmstat.c | 1 +
mm/zsmalloc.c | 11 +++
mm/zswap.c | 9 ++-
9 files changed, 242 insertions(+), 65 deletions(-)
--
2.54.0