All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@suse.cz>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Mel Gorman <mgorman@suse.de>,
	linux-mm@kvack.org, Ying Han <yinghan@google.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Rik van Riel <riel@redhat.com>, Hugh Dickins <hughd@google.com>,
	Glauber Costa <glommer@parallels.com>
Subject: Re: [RFC 1/3] memcg: integrate soft reclaim tighter with zone shrinking code
Date: Sun, 14 Apr 2013 08:04:55 -0700	[thread overview]
Message-ID: <20130414150455.GE6478@dhcp22.suse.cz> (raw)
In-Reply-To: <20130414145532.GB5701@cmpxchg.org>

On Sun 14-04-13 10:55:32, Johannes Weiner wrote:
> On Sun, Apr 14, 2013 at 07:34:20AM -0700, Michal Hocko wrote:
> > On Sun 14-04-13 01:42:52, Mel Gorman wrote:
> > > On Tue, Apr 09, 2013 at 02:13:13PM +0200, Michal Hocko wrote:
> > > > @@ -1961,6 +1973,13 @@ static void shrink_zone(struct zone *zone, struct scan_control *sc)
> > > >  		do {
> > > >  			struct lruvec *lruvec;
> > > >  
> > > > +			if (soft_reclaim &&
> > > > +					!mem_cgroup_soft_reclaim_eligible(memcg)) {
> > > > +				memcg = mem_cgroup_iter(root, memcg, &reclaim);
> > > > +				continue;
> > > > +			}
> > > > +
> > > 
> > > Calling mem_cgroup_soft_reclaim_eligible means we do multiple searches
> > > of the hierarchy while ascending the hierarchy. It's a stretch but it
> > > may be a problem for very deep hierarchies.
> > 
> > I think it shouldn't be a problem for hundreds of memcgs and I am quite
> > sceptical about such configurations for other reasons (e.g. charging
> > overhead). And we are in the reclaim path so this is hardly a hot path
> > (unlike the chargin). So while this might turn out to be a real problem
> > we would need to fix other parts as well with higher priority.
> > 
> > > Would it be worth having mem_cgroup_soft_reclaim_eligible return what
> > > the highest parent over its soft limit was and stop the iterator when
> > > the highest parent is reached?  I think this would avoid calling
> > > mem_cgroup_soft_reclaim_eligible multiple times.
> > 
> > This is basically what the original implementation did and I think it is
> > not the right way to go. First why should we care who is the most
> > exceeding group. We should treat them equally if the there is no special
> > reason to not do so. And I do not see such a special reason. Besides
> > that keeping a exceed sorted data structure of memcgs turned out quite a
> > lot of code. Note that the later patch integrate soft reclaim into
> > targeted reclaim which would mean that we would have to keep such a
> > list/tree per memcg.
> 
> I think what Mel suggests is not to return the highest excessor, but
> return the highest parent in the hierarchy that is in excess.  Once
> you have this parent, you know that all children are in excess,
> without looking them up individually.

OK, I see it now.

> However, that parent is not necessarily the root of the hierarchy that
> is being reclaimed and you might have multiple of such sub-hierarchies
> in excess.  To handle all the corner cases, I'd expect the
> relationship checking to get really complicated.

We could always return the leftmost and get to others as the iteration
continues. I will try to think about it some more. I do not think we
would save a lot but it looks like a neat idea.

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2013-04-14 15:05 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-09 12:13 [RFC 0/3] soft reclaim rework Michal Hocko
2013-04-09 12:13 ` [RFC 1/3] memcg: integrate soft reclaim tighter with zone shrinking code Michal Hocko
2013-04-09 13:08   ` Johannes Weiner
2013-04-09 13:31     ` Michal Hocko
2013-04-09 13:57   ` Glauber Costa
2013-04-09 14:22     ` Michal Hocko
2013-04-09 16:45   ` Kamezawa Hiroyuki
2013-04-09 17:05     ` Michal Hocko
2013-04-14  0:42   ` Mel Gorman
2013-04-14 14:34     ` Michal Hocko
2013-04-14 14:55       ` Johannes Weiner
2013-04-14 15:04         ` Michal Hocko [this message]
2013-04-14 15:11           ` Michal Hocko
2013-04-14 18:03           ` Rik van Riel
2013-04-09 12:13 ` [RFC 2/3] memcg: Ignore soft limit until it is explicitly specified Michal Hocko
2013-04-09 13:24   ` Johannes Weiner
2013-04-09 13:42     ` Michal Hocko
2013-04-09 17:10   ` Kamezawa Hiroyuki
2013-04-09 17:22     ` Michal Hocko
2013-04-09 12:13 ` [RFC 3/3] vmscan, memcg: Do softlimit reclaim also for targeted reclaim Michal Hocko
2013-04-22  2:14   ` Michal Hocko
2013-04-09 15:37 ` [RFC 0/3] soft reclaim rework Michal Hocko
2013-04-09 15:50   ` Michal Hocko
2013-04-11  8:43 ` Michal Hocko
2013-04-11  9:07   ` Michal Hocko
2013-04-11 13:04   ` Michal Hocko
2013-04-17 22:52 ` Ying Han

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=20130414150455.GE6478@dhcp22.suse.cz \
    --to=mhocko@suse.cz \
    --cc=glommer@parallels.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=riel@redhat.com \
    --cc=yinghan@google.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.