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

From: Michal Hocko
Date: Tue May 29 2018 - 04:28:05 EST


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.

--
Michal Hocko
SUSE Labs