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

From: Michal Hocko
Date: Thu Mar 26 2020 - 02:43:44 EST


On Thu 26-03-20 12:24:54, Baoquan He wrote:
> 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.

The point is why should we even care. Displaying that information
shouldn't hurt anything, right?

--
Michal Hocko
SUSE Labs