Re: [LKP] [lkp-robot] [mm, memcontrol] 309fe96bfc: vm-scalability.throughput +23.0% improvement

From: Aaron Lu
Date: Tue May 29 2018 - 05:00:37 EST


On Tue, May 29, 2018 at 10:27:51AM +0200, Michal Hocko wrote:
> On Tue 29-05-18 16:11:27, Aaron Lu wrote:
> > On Tue, May 29, 2018 at 09:58:00AM +0200, Michal Hocko wrote:
> > > On Tue 29-05-18 03:15:51, Lu, Aaron wrote:
> > > > On Mon, 2018-05-28 at 14:03 +0200, Michal Hocko wrote:
> > > > > On Mon 28-05-18 19:40:19, kernel test robot wrote:
> > > > > >
> > > > > > Greeting,
> > > > > >
> > > > > > FYI, we noticed a +23.0% improvement of vm-scalability.throughput due to commit:
> > > > > >
> > > > > >
> > > > > > commit: 309fe96bfc0ae387f53612927a8f0dc3eb056efd ("mm, memcontrol: implement memory.swap.events")
> > > > > > https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master
> > > > >
> > > > > This doesn't make any sense to me. The patch merely adds an accounting.
> > > > > It doesn't optimize anything. So I strongly suspect the result is just
> > > > > misleading or the test (environment) misconfigured. Not the first time
> > > > > I am seeing something like that I am afraid.
> > > > >
> > > >
> > > > Most likely the same situation as:
> > > > "
> > > > FYI, we noticed a -27.2% regression of will-it-scale.per_process_ops
> > > > due to commit:
> > > >
> > > >
> > > > commit: e27be240df53f1a20c659168e722b5d9f16cc7f4 ("mm: memcg: make sure
> > > > memory.events is uptodate when waking pollers")
> > > > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
> > > > "
> > > >
> > > > Where the performance change is due to layout change of
> > > > 'struct mem_cgroup':
> > > > http://lkml.kernel.org/r/20180528085201.GA2918@xxxxxxxxx
> > >
> > > I do not follow. How can _this_ patch lead to an improvement when it
> > > actually _adds_ an accounting? The other report you are mentioning is a
> >
> > This patch also changed the layout of 'struct mem_cgroup':
> >
> > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> > index d99b71bc2c66..517096c3cc99 100644
> > --- a/include/linux/memcontrol.h
> > +++ b/include/linux/memcontrol.h
> > @@ -208,6 +210,9 @@ struct mem_cgroup {
> > atomic_long_t memory_events[MEMCG_NR_MEMORY_EVENTS];
> > struct cgroup_file events_file;
> >
> > + /* handle for "memory.swap.events" */
> > + struct cgroup_file swap_events_file;
> > +
> > /* protect arrays of thresholds */
> > struct mutex thresholds_lock;
> >
> > And I'm guessing that might be the cause.
>
> Ohh, you are right! Sorry, I've missed that part.

Never mind, I want to thank you for taking a look at these reports :-)

I just tried to move this newly added field to the bottom of the
structure(just above 'struct mem_cgroup_per_node *nodeinfo[0];'), and
performance dropped to 82665166, still much better than base but already
worse than this patch.

As you said in another email, this is really fragile.