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

From: Vlastimil Babka
Date: Tue Apr 09 2019 - 10:43:29 EST


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.

>>
>>> 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 */
>>>
>>
>