All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Waiman Long <longman@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>,
	Vladimir Davydov <vdavydov.dev@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tejun Heo <tj@kernel.org>,
	linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
	linux-mm@kvack.org, Shakeel Butt <shakeelb@google.com>,
	Chris Down <chris@chrisdown.name>, Roman Gushchin <guro@fb.com>,
	Yafang Shao <laoar.shao@gmail.com>
Subject: Re: [PATCH v2 2/3] mm/memcg: Simplify mem_cgroup_get_max()
Date: Mon, 14 Sep 2020 17:32:00 -0400	[thread overview]
Message-ID: <20200914213200.GC175618@cmpxchg.org> (raw)
In-Reply-To: <20200914212904.GB175618@cmpxchg.org>

On Mon, Sep 14, 2020 at 05:29:06PM -0400, Johannes Weiner wrote:
> On Mon, Sep 14, 2020 at 09:51:26AM -0400, Waiman Long wrote:
> > On 9/14/20 7:48 AM, Michal Hocko wrote:
> > > On Sun 13-09-20 22:44:51, Waiman Long wrote:
> > > > The mem_cgroup_get_max() function used to get memory+swap max from
> > > > both the v1 memsw and v2 memory+swap page counters & return the maximum
> > > > of these 2 values. This is redundant and it is more efficient to just
> > > > get either the v1 or the v2 values depending on which one is currently
> > > > in use.
> > > > 
> > > > Signed-off-by: Waiman Long <longman@redhat.com>
> > > > ---
> > > >   mm/memcontrol.c | 20 +++++++++-----------
> > > >   1 file changed, 9 insertions(+), 11 deletions(-)
> > > > 
> > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> > > > index 8c74f1200261..ca36bed588d1 100644
> > > > --- a/mm/memcontrol.c
> > > > +++ b/mm/memcontrol.c
> > > > @@ -1633,17 +1633,15 @@ void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg)
> > > >    */
> > > >   unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg)
> > > >   {
> > > > -	unsigned long max;
> > > > -
> > > > -	max = READ_ONCE(memcg->memory.max);
> > > > -	if (mem_cgroup_swappiness(memcg)) {
> > > > -		unsigned long memsw_max;
> > > > -		unsigned long swap_max;
> > > > -
> > > > -		memsw_max = memcg->memsw.max;
> > > > -		swap_max = READ_ONCE(memcg->swap.max);
> > > > -		swap_max = min(swap_max, (unsigned long)total_swap_pages);
> > > > -		max = min(max + swap_max, memsw_max);
> > > > +	unsigned long max = READ_ONCE(memcg->memory.max);
> > > > +
> > > > +	if (cgroup_subsys_on_dfl(memory_cgrp_subsys)) {
> > > > +		if (mem_cgroup_swappiness(memcg))
> > > > +			max += min(READ_ONCE(memcg->swap.max),
> > > > +				   (unsigned long)total_swap_pages);
> > > > +	} else { /* v1 */
> > > > +		if (mem_cgroup_swappiness(memcg))
> > > > +			max = memcg->memsw.max;
> > > I agree that making v1 vs. v2 distinction here makes the code more
> > > obvious. But I do not think your code is correct for v1. In a default
> > > state it would lead to max = PAGE_COUNTER_MAX which is not something
> > > we want, right?
> > > 
> > > instead you want
> > > 		max += min(READ_ONCE(memcg->memsw.max), total_swap_pages);
> > > 
> > You are right, it is a bit tricky for v1.
> > 
> > I will change it to
> > 
> >     max += min(READ_ONCE(memcg->memsw.max) - max, total_swap_pages):
> 
> memsw.max can be smaller than max.
> 
> max = min3(max, READ_ONCE(memcg->memsw.max), total_swap_pages)?

Nevermind, I saw the follow-up below, and it's indeed not allowed to
configure it like that.

  reply	other threads:[~2020-09-14 21:32 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14  2:44 [PATCH v2 0/3] mm/memcg: Miscellaneous cleanups and streamlining Waiman Long
2020-09-14  2:44 ` Waiman Long
2020-09-14  2:44 ` [PATCH v2 1/3] mm/memcg: Clean up obsolete enum charge_type Waiman Long
     [not found]   ` <20200914024452.19167-2-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14 11:37     ` Michal Hocko
2020-09-14 11:37       ` Michal Hocko
     [not found] ` <20200914024452.19167-1-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14  2:44   ` [PATCH v2 2/3] mm/memcg: Simplify mem_cgroup_get_max() Waiman Long
2020-09-14  2:44     ` Waiman Long
     [not found]     ` <20200914024452.19167-3-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14 11:48       ` Michal Hocko
2020-09-14 11:48         ` Michal Hocko
     [not found]         ` <20200914114825.GM16999-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-09-14 13:51           ` Waiman Long
2020-09-14 13:51             ` Waiman Long
     [not found]             ` <e8ddc443-b56a-1dd6-6d41-ad217e9aea80-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14 21:29               ` Johannes Weiner
2020-09-14 21:29                 ` Johannes Weiner
2020-09-14 21:32                 ` Johannes Weiner [this message]
2020-09-14  2:44   ` [PATCH v2 3/3] mm/memcg: Unify swap and memsw page counters Waiman Long
2020-09-14  2:44     ` Waiman Long
2020-09-14 11:54     ` Michal Hocko
     [not found]     ` <20200914024452.19167-4-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14 15:37       ` Shakeel Butt
2020-09-14 15:37         ` Shakeel Butt
2020-09-14 14:19   ` [PATCH v3 2/3] mm/memcg: Simplify mem_cgroup_get_max() Waiman Long
2020-09-14 14:19     ` Waiman Long
2020-09-14 14:47     ` Michal Hocko
2020-09-14 14:58       ` Waiman Long
2020-09-14 15:09   ` [PATCH v4 " Waiman Long
2020-09-14 15:09     ` Waiman Long
     [not found]     ` <20200914150928.7841-1-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-09-14 15:18       ` Michal Hocko
2020-09-14 15:18         ` Michal Hocko
2020-09-14 15:36       ` Shakeel Butt
2020-09-14 15:36         ` Shakeel Butt

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=20200914213200.GC175618@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=chris@chrisdown.name \
    --cc=guro@fb.com \
    --cc=laoar.shao@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=longman@redhat.com \
    --cc=mhocko@suse.com \
    --cc=shakeelb@google.com \
    --cc=tj@kernel.org \
    --cc=vdavydov.dev@gmail.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.