All of lore.kernel.org
 help / color / mirror / Atom feed
From: Waiman Long <longman@redhat.com>
To: Michal Hocko <mhocko@suse.com>, Feng Tang <feng.tang@intel.com>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Shakeel Butt <shakeelb@google.com>,
	Chris Down <chris@chrisdown.name>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Roman Gushchin <guro@fb.com>, Tejun Heo <tj@kernel.org>,
	Vladimir Davydov <vdavydov.dev@gmail.com>,
	Yafang Shao <laoar.shao@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	lkp@lists.01.org, lkp@intel.com, zhengjun.xing@intel.com,
	ying.huang@intel.com
Subject: Re: [LKP] Re: [mm/memcg] bd0b230fe1: will-it-scale.per_process_ops -22.7% regression
Date: Thu, 12 Nov 2020 11:43:45 -0500	[thread overview]
Message-ID: <7e40849b-f9e0-34d4-4254-c2c99dd71f78@redhat.com> (raw)
In-Reply-To: <20201112141654.GC12240@dhcp22.suse.cz>

On 11/12/20 9:16 AM, Michal Hocko wrote:
> On Thu 12-11-20 20:28:44, Feng Tang wrote:
>> Hi Michal,
>>
>> On Wed, Nov 04, 2020 at 09:15:46AM +0100, Michal Hocko wrote:
>>>>>> Hi Michal,
>>>>>>
>>>>>> We used the default configure of cgroups, not sure what configuration you
>>>>>> want,
>>>>>> could you give me more details? and here is the cgroup info of will-it-scale
>>>>>> process:
>>>>>>
>>>>>> $ cat /proc/3042/cgroup
>>>>>> 12:hugetlb:/
>>>>>> 11:memory:/system.slice/lkp-bootstrap.service
>>>>> OK, this means that memory controler is enabled and in use. Btw. do you
>>>>> get the original performance if you add one phony page_counter after the
>>>>> union?
>>>>>
>>>> I add one phony page_counter after the union and re-test, the regression
>>>> reduced to -1.2%. It looks like the regression caused by the data structure
>>>> layout change.
>>> Thanks for double checking. Could you try to cache align the
>>> page_counter struct? If that helps then we should figure which counters
>>> acks against each other by adding the alignement between the respective
>>> counters.
>> We tried below patch to make the 'page_counter' aligned.
>>    
>>    diff --git a/include/linux/page_counter.h b/include/linux/page_counter.h
>>    index bab7e57..9efa6f7 100644
>>    --- a/include/linux/page_counter.h
>>    +++ b/include/linux/page_counter.h
>>    @@ -26,7 +26,7 @@ struct page_counter {
>>     	/* legacy */
>>     	unsigned long watermark;
>>     	unsigned long failcnt;
>>    -};
>>    +} ____cacheline_internodealigned_in_smp;
>>     
>> and with it, the -22.7% peformance change turns to a small -1.7%, which
>> confirms the performance bump is caused by the change to data alignment.
>>
>> After the patch, size of 'page_counter' increases from 104 bytes to 128
>> bytes, and the size of 'mem_cgroup' increases from 2880 bytes to 3008
>> bytes(with our kernel config). Another major data structure which
>> contains 'page_counter' is 'hugetlb_cgroup', whose size will change
>> from 912B to 1024B.
>>
>> Should we make these page_counters aligned to reduce cacheline conflict?
> I would rather focus on a more effective mem_cgroup layout. It is very
> likely that we are just stumbling over two counters here.
>
> Could you try to add cache alignment of counters after memory and see
> which one makes the difference? I do not expect memsw to be the one
> because that one is used together with the main counter. But who knows
> maybe the way it crosses the cache line has the exact effect. Hard to
> tell without other numbers.
>
> Btw. it would be great to see what the effect is on cgroup v2 as well.
>
> Thanks for pursuing this!

The contention may be in the page counters themselves or it can be in 
other fields below the page counters. The cacheline alignment will cause 
"high_work" just after the page counters to start at a cacheline 
boundary. I will try removing the cacheline alignment in the page 
counter and add it to high_work to see there is any change in 
performance. If there is no change, the performance problem will not be 
in the page counters.

Cheers,
Longman


  reply	other threads:[~2020-11-12 16:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-02  9:15 [mm/memcg] bd0b230fe1: will-it-scale.per_process_ops -22.7% regression kernel test robot
2020-11-02  9:27 ` Michal Hocko
2020-11-02  9:53   ` [LKP] " Rong Chen
2020-11-02 10:02     ` Michal Hocko
2020-11-04  1:20       ` Xing Zhengjun
2020-11-04  2:46         ` Waiman Long
2020-11-04  8:15         ` Michal Hocko
2020-11-12 12:28           ` Feng Tang
2020-11-12 14:16             ` Michal Hocko
2020-11-12 16:43               ` Waiman Long [this message]
2020-11-13  7:39                 ` Feng Tang
2020-11-13  7:34               ` Feng Tang
2020-11-20 11:44                 ` Feng Tang
2020-11-20 13:19                   ` Michal Hocko
2020-11-20 14:30                     ` Feng Tang
2020-11-25  6:24                   ` Feng Tang
2020-11-26  1:34                     ` Waiman Long
2020-11-26 17:39                     ` Linus Torvalds
2020-11-30  8:48                     ` Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7e40849b-f9e0-34d4-4254-c2c99dd71f78@redhat.com \
    --to=longman@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=chris@chrisdown.name \
    --cc=feng.tang@intel.com \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=lkp@lists.01.org \
    --cc=mhocko@suse.com \
    --cc=shakeelb@google.com \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vdavydov.dev@gmail.com \
    --cc=ying.huang@intel.com \
    --cc=zhengjun.xing@intel.com \
    --cc=zhengjun.xing@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.