summaryrefslogtreecommitdiff
path: root/include/asm-generic/module.lds.h
diff options
context:
space:
mode:
authorShakeel Butt <shakeel.butt@linux.dev>2024-05-01 20:26:13 +0300
committerAndrew Morton <akpm@linux-foundation.org>2024-05-07 20:36:59 +0300
commitff48c71c26aaefb090c108d8803abdf0c75f00a9 (patch)
tree95ab09cf3c05cdc910cc79cf1c6520e5d47359d9 /include/asm-generic/module.lds.h
parentaab6103b97f1c7ca6cf33e78d5e6916e53fc265c (diff)
downloadlinux-ff48c71c26aaefb090c108d8803abdf0c75f00a9.tar.xz
memcg: reduce memory for the lruvec and memcg stats
At the moment, the amount of memory allocated for stats related structs in the mem_cgroup corresponds to the size of enum node_stat_item. However not all fields in enum node_stat_item have corresponding memcg stats. So, let's use indirection mechanism similar to the one used for memcg vmstats management. For a given x86_64 config, the size of stats with and without patch is: structs size in bytes w/o with struct lruvec_stats 1128 648 struct lruvec_stats_percpu 752 432 struct memcg_vmstats 1832 1352 struct memcg_vmstats_percpu 1280 960 The memory savings are further compounded by the fact that these structs are allocated for each cpu and for each node. To be precise, for each memcg the memory saved would be: Memory saved = ((21 * 3 * NR_NODES) + (21 * 2 * NR_NODES * NR_CPUS) + (21 * 3) + (21 * 2 * NR_CPUS)) * sizeof(long) Where 21 is the number of fields eliminated. Link: https://lkml.kernel.org/r/20240501172617.678560-5-shakeel.butt@linux.dev Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev> Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: T.J. Mercier <tjmercier@google.com> Cc: Yosry Ahmed <yosryahmed@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include/asm-generic/module.lds.h')
0 files changed, 0 insertions, 0 deletions