[Devel] [PATCH RH8] memcg: Show correct values of slab_[un]reclaimable in memory.stat files

Evgenii Shatokhin eshatokhin at virtuozzo.com
Mon Sep 6 15:18:19 MSK 2021


The values of NR_SLAB_RECLAIMABLE_B and NR_SLAB_UNRECLAIMABLE_B counters
are in bytes rather than in pages. So, one should not multiply them by
PAGE_SIZE when preparing the records for 'memory.stat' files in the memory
cgroups.

This also applies to 'total_slab_[un]reclaimable' stats in those files.

https://jira.sw.ru/browse/PSBM-132728
Fixes: cf89dfa06ebe ("mm: memcontrol: add stats for reclaimable and unreclaimable stats")

Signed-off-by: Evgenii Shatokhin <eshatokhin at virtuozzo.com>
---
 mm/memcontrol.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 989dc23d05b8..3f6f59ac8746 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4727,7 +4727,9 @@ static int memcg_stat_show(struct seq_file *m, void *v)
 		if (memcg1_stats[i] == NR_ANON_THPS)
 			nr *= HPAGE_PMD_NR;
 #endif
-		seq_printf(m, "%s %lu\n", memcg1_stat_names[i], nr * PAGE_SIZE);
+		if (!vmstat_item_in_bytes(memcg1_stats[i]))
+			nr *= PAGE_SIZE;
+		seq_printf(m, "%s %lu\n", memcg1_stat_names[i], nr);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
@@ -4767,17 +4769,18 @@ static int memcg_stat_show(struct seq_file *m, void *v)
 			   (u64)memsw * PAGE_SIZE);
 
 	for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) {
-		unsigned long nr;
+		u64 nr;
 
 		if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account())
 			continue;
-		nr = memcg_page_state(memcg, memcg1_stats[i]);
+		nr = (u64)memcg_page_state(memcg, memcg1_stats[i]);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 		if (memcg1_stats[i] == NR_ANON_THPS)
 			nr *= HPAGE_PMD_NR;
 #endif
-		seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i],
-						(u64)nr * PAGE_SIZE);
+		if (!vmstat_item_in_bytes(memcg1_stats[i]))
+			nr *= PAGE_SIZE;
+		seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i], nr);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
-- 
2.30.2



More information about the Devel mailing list