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

From: Aaron Lu
Date: Tue May 29 2018 - 04:11:39 EST


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.

> _regression_ and I can imagine that the layout changes can lead to that
> result.