Re: [PATCH] mm/vmstat: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y CONFIG_SMP=n

From: Konstantin Khlebnikov
Date: Tue Apr 09 2019 - 11:14:57 EST




On 09.04.2019 17:43, Vlastimil Babka wrote:
On 4/9/19 3:28 PM, Konstantin Khlebnikov wrote:
On 09.04.2019 16:16, Vlastimil Babka wrote:
On 4/9/19 3:01 PM, Konstantin Khlebnikov wrote:
Commit 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
depends on skipping vmstat entries with empty name introduced in commit
7aaf77272358 ("mm: don't show nr_indirectly_reclaimable in /proc/vmstat")
but reverted in commit b29940c1abd7 ("mm: rename and change semantics of
nr_indirectly_reclaimable_bytes").

Oops, good catch.

Also 4.19.y has broken format in /sys/devices/system/node/node*/vmstat and /proc/zoneinfo.
Do you have any plans on pushing related slab changes into that stable branch?

Hmm do you mean this?
https://lore.kernel.org/linux-mm/20181030174649.16778-1-guro@xxxxxx/

Looks like Roman marked it wrongly for # 4.14.x-4.18.x and I didn't notice, my
slab changes are indeed 4.20, so we should resend for 4.19.

Yep, this should fix zoneinfo
but /sys/devices/system/node/node*/vmstat needs yet another fix.



So, skipping no longer works and /proc/vmstat has misformatted lines " 0".
This patch simply shows debug counters "nr_tlb_remote_*" for UP.

Right, that's the the best solution IMHO.

Fixes: 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

---
mm/vmstat.c | 5 -----
1 file changed, 5 deletions(-)

diff --git a/mm/vmstat.c b/mm/vmstat.c
index 36b56f858f0f..a7d493366a65 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1274,13 +1274,8 @@ const char * const vmstat_text[] = {
#endif
#endif /* CONFIG_MEMORY_BALLOON */
#ifdef CONFIG_DEBUG_TLBFLUSH
-#ifdef CONFIG_SMP
"nr_tlb_remote_flush",
"nr_tlb_remote_flush_received",
-#else
- "", /* nr_tlb_remote_flush */
- "", /* nr_tlb_remote_flush_received */
-#endif /* CONFIG_SMP */
"nr_tlb_local_flush_all",
"nr_tlb_local_flush_one",
#endif /* CONFIG_DEBUG_TLBFLUSH */