Re: [PATCH 4/5] mm/vmstat.c: move the per-node stats to the front of /proc/zoneinfo

From: Baoquan He
Date: Thu Mar 26 2020 - 00:26:53 EST


On 03/25/20 at 12:45pm, David Rientjes wrote:
> On Wed, 25 Mar 2020, Baoquan He wrote:
>
> > > Even this can break existing parsers. Fixing that up is likely not hard
> > > and existing parsers would be mostly debugging hacks here and there but
> > > I do miss any actual justification except for you considering it more
> > > sensible. I do not remember this would be a common pain point for people
> > > parsing this file. If anything the overal structure of the file makes it
> > > hard to parse and your patches do not really address that. We are likely
> > > too late to make the output much more sensible TBH.
> > >
> > > That being said, I haven't looked more closely on your patches because I
> > > do not have spare cycles for that. Your justification for touching the
> > > code which seems to be working relatively well is quite weak IMHO, yet
> > > it adds a non zero risk for breaking existing parsers.
> >
> > I would take the saying of non zero risk for breaking existing parsers.
> > When considering this change, I thought about the possible risk. However,
> > found out the per-node stats was added in 2016 which is not so late, and
> > assume nobody will rely on the order of per-node stats embeded into a
> > zone. But I have to admit any concern or worry of risk is worth being
> > considerred carefully since /proc/zoneinfo is a classic interface.
> >
>
> For context, we started parsing /proc/zoneinfo in initscripts to be able
> to determine the order in which vm.lowmem_reserve_ratio needs to be set
> and this required my kernel change from 2017:
>
> commit b2bd8598195f1b2a72130592125ac6b4218988a2
> Author: David Rientjes <rientjes@xxxxxxxxxx>
> Date: Wed May 3 14:52:59 2017 -0700
>
> mm, vmstat: print non-populated zones in zoneinfo
>
> Otherwise, we found, it's much more difficult to determine how this array
> should be structured. So at least we parse this file very carefully, I'm
> not sure how much others do, but it seems like an unnecessary risk for
> little reward. I'm happy to see it has been decided to drop this patch
> and patch 5.


OK, I see why it is in such a situation, the empty zones were not printed.

I could still not get how vm.lowmem_reserve_ratio is set with
/proc/zoneinfo in the old initscripts, do you see any risk if not
filling and showing the ->lowmem_reserve[] of empty zone in
patch 2 and 3? Thanks in advance.