Commit e09b0b61 authored by Yang Shi's avatar Yang Shi Committed by Andrew Morton

mm: memcg: export workingset refault stats for cgroup v1

Workingset refault stats are important and useful metrics to measure how
well reclaimer and swapping work and how healthy the services are, but
they are just available for cgroup v2.  There are still plenty users with
cgroup v1, export the stats for cgroup v1.

Link: https://lkml.kernel.org/r/20220816185801.651091-1-shy828301@gmail.comSigned-off-by: default avatarYang Shi <shy828301@gmail.com>
Acked-by: default avatarShakeel Butt <shakeelb@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Yosry Ahmed <yosryahmed@google.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 8f0efa81
...@@ -3975,6 +3975,8 @@ static const unsigned int memcg1_stats[] = { ...@@ -3975,6 +3975,8 @@ static const unsigned int memcg1_stats[] = {
NR_FILE_MAPPED, NR_FILE_MAPPED,
NR_FILE_DIRTY, NR_FILE_DIRTY,
NR_WRITEBACK, NR_WRITEBACK,
WORKINGSET_REFAULT_ANON,
WORKINGSET_REFAULT_FILE,
MEMCG_SWAP, MEMCG_SWAP,
}; };
...@@ -3988,6 +3990,8 @@ static const char *const memcg1_stat_names[] = { ...@@ -3988,6 +3990,8 @@ static const char *const memcg1_stat_names[] = {
"mapped_file", "mapped_file",
"dirty", "dirty",
"writeback", "writeback",
"workingset_refault_anon",
"workingset_refault_file",
"swap", "swap",
}; };
...@@ -4016,7 +4020,8 @@ static int memcg_stat_show(struct seq_file *m, void *v) ...@@ -4016,7 +4020,8 @@ static int memcg_stat_show(struct seq_file *m, void *v)
if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account()) if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account())
continue; continue;
nr = memcg_page_state_local(memcg, memcg1_stats[i]); nr = memcg_page_state_local(memcg, memcg1_stats[i]);
seq_printf(m, "%s %lu\n", memcg1_stat_names[i], nr * PAGE_SIZE); seq_printf(m, "%s %lu\n", memcg1_stat_names[i],
nr * memcg_page_state_unit(memcg1_stats[i]));
} }
for (i = 0; i < ARRAY_SIZE(memcg1_events); i++) for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
...@@ -4047,7 +4052,7 @@ static int memcg_stat_show(struct seq_file *m, void *v) ...@@ -4047,7 +4052,7 @@ static int memcg_stat_show(struct seq_file *m, void *v)
continue; continue;
nr = memcg_page_state(memcg, memcg1_stats[i]); nr = memcg_page_state(memcg, memcg1_stats[i]);
seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i], seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i],
(u64)nr * PAGE_SIZE); (u64)nr * memcg_page_state_unit(memcg1_stats[i]));
} }
for (i = 0; i < ARRAY_SIZE(memcg1_events); i++) for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment