From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-mm@kvack.org, YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
lizf@cn.fujitsu.com,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Rik van Riel <riel@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 5/5] Memory controller soft limit reclaim on contention (v7)
Date: Mon, 23 Mar 2009 09:42:53 +0530 [thread overview]
Message-ID: <20090323041253.GH24227@balbir.in.ibm.com> (raw)
In-Reply-To: <20090323090205.49fc95d0.kamezawa.hiroyu@jp.fujitsu.com>
* KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> [2009-03-23 09:02:05]:
> On Sun, 22 Mar 2009 19:57:48 +0530
> Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
>
> > * KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> [2009-03-20 13:06:30]:
> >
> > > On Thu, 19 Mar 2009 22:27:52 +0530
> > > Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
> > >
> > > > Feature: Implement reclaim from groups over their soft limit
> > > >
> > > > From: Balbir Singh <balbir@linux.vnet.ibm.com>
> > > >
> > > > Changelog v7...v6
> > > > 1. Refactored out reclaim_options patch into a separate patch
> > > > 2. Added additional checks for all swap off condition in
> > > > mem_cgroup_hierarchical_reclaim()
> > >
> > > > - did_some_progress = try_to_free_pages(zonelist, order, gfp_mask);
> > > > + /*
> > > > + * Try to free up some pages from the memory controllers soft
> > > > + * limit queue.
> > > > + */
> > > > + did_some_progress = mem_cgroup_soft_limit_reclaim(zonelist, gfp_mask);
> > > > + if (order || !did_some_progress)
> > > > + did_some_progress += try_to_free_pages(zonelist, order,
> > > > + gfp_mask);
> > > >
> > >
> > > Anyway, my biggest concern is here, always.
> > >
> > > By this.
> > > if (order > 1), try_to_free_pages() is called twice.
> >
> > try_to_free_mem_cgroup_pages and try_to_free_pages() are called
> >
> > > Hmm...how about
> >
> >
> > >
> > > if (!pages_reclaimed && !(gfp_mask & __GFP_NORETRY)) { # this is the first loop or noretry
> > > did_some_progress = mem_cgroup_soft_limit_reclaim(zonelist, gfp_mask);
> >
> > OK, I see what you mean.. but the cost of the
> > mem_cgroup_soft_limit_reclaim() is really a low overhead call, which
> > will bail out very quickly if nothing is over their soft limit.
>
> My point is "if something is over soft limit" case. Memory is reclaiemd twice.
> My above code tries to avoid call memory-reclaim twice.
>
Twice if order > 0 or if soft limit reclaim fails or there is nothing
to soft limit reclaim.
> Even if order > 0, mem_cgroup_try_to_free_pages() may be able to recover
> the situation. Maybe it's better to allow lumpty-reclaim even when
> !scanning_global_lru().
>
if order > 0, we let the global reclaim handler reclaim (scan global
LRU). I think the chance of success is higher through that path,
having said that I have not experimented with trying to allow
lumpy-reclaim from memory cgroup LRU's. I think that should be a
separate effort from this one.
>
> > Even if we retry, we do a simple check for soft-limit-reclaim, if
> > there is really something to be reclaimed, we reclaim from there
> > first.
> >
> That means you reclaim memory twice ;)
> AFAIK,
> - fork() -> task_struct/stack
> page table in x86 PAE mode
> requires order-1 pages very frequently and this "call twice" approach will kill
> the application peformance very effectively.
Yes, it would if this was the only way to allocate pages. But look at
reality, with kswapd running in the background, how frequently do you
expect to hit the reclaim path. Could you clarify what you mean by
order-1 (2^1), if so soft limit reclaim is not invoked and it should
not hurt performance. What am I missing?
>
> > > if (!did_some_progress)
> > > did_some_progress = try_to_free_pages(zonelist, order, gfp_mask);
> > > }else
> > > did_some_progress = try_to_free_pages(zonelist, order, gfp_mask);
> > >
> > >
> > > maybe a bit more concervative.
> > >
> > >
> > > And I wonder "nodemask" should be checked or not..
> > > softlimit reclaim doesn't seem to work well with nodemask...
> >
> > Doesn't the zonelist take care of nodemask?
> >
>
> Not sure, but I think, no check. hmm BUG in vmscan.c ?
>
The zonelist is built using policy_zonelist, that handles nodemask as
well. That should keep the zonelist and nodemask in sync.. no?
--
Balbir
--
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>
next prev parent reply other threads:[~2009-03-23 3:16 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-19 16:57 [PATCH 0/5] Memory controller soft limit patches (v7) Balbir Singh
2009-03-19 16:57 ` [PATCH 1/5] Memory controller soft limit documentation (v7) Balbir Singh
2009-03-19 16:57 ` [PATCH 2/5] Memory controller soft limit interface (v7) Balbir Singh
2009-03-19 16:57 ` [PATCH 3/5] Memory controller soft limit organize cgroups (v7) Balbir Singh
2009-03-20 3:46 ` KAMEZAWA Hiroyuki
2009-03-22 14:21 ` Balbir Singh
2009-03-22 23:53 ` KAMEZAWA Hiroyuki
2009-03-23 3:34 ` Balbir Singh
2009-03-23 3:38 ` KAMEZAWA Hiroyuki
2009-03-23 4:15 ` Balbir Singh
2009-03-23 4:23 ` KAMEZAWA Hiroyuki
2009-03-23 8:22 ` Balbir Singh
2009-03-23 8:47 ` KAMEZAWA Hiroyuki
2009-03-23 9:30 ` Balbir Singh
2009-03-25 4:59 ` KAMEZAWA Hiroyuki
2009-03-25 5:29 ` Balbir Singh
2009-03-25 5:39 ` KAMEZAWA Hiroyuki
2009-03-25 5:53 ` Balbir Singh
2009-03-25 6:01 ` KAMEZAWA Hiroyuki
2009-03-25 6:21 ` Balbir Singh
2009-03-25 6:38 ` Balbir Singh
2009-03-25 5:07 ` KAMEZAWA Hiroyuki
2009-03-25 5:18 ` Balbir Singh
2009-03-25 5:22 ` KAMEZAWA Hiroyuki
2009-03-19 16:57 ` [PATCH 4/5] Memory controller soft limit refactor reclaim flags (v7) Balbir Singh
2009-03-20 3:47 ` KAMEZAWA Hiroyuki
2009-03-22 14:21 ` Balbir Singh
2009-03-19 16:57 ` [PATCH 5/5] Memory controller soft limit reclaim on contention (v7) Balbir Singh
2009-03-20 4:06 ` KAMEZAWA Hiroyuki
2009-03-22 14:27 ` Balbir Singh
2009-03-23 0:02 ` KAMEZAWA Hiroyuki
2009-03-23 4:12 ` Balbir Singh [this message]
2009-03-23 4:20 ` KAMEZAWA Hiroyuki
2009-03-23 8:28 ` Balbir Singh
2009-03-23 8:30 ` KAMEZAWA Hiroyuki
2009-03-23 3:50 ` [PATCH 0/5] Memory controller soft limit patches (v7) KAMEZAWA Hiroyuki
2009-03-23 5:22 ` Balbir Singh
2009-03-23 5:31 ` KAMEZAWA Hiroyuki
2009-03-23 6:12 ` KAMEZAWA Hiroyuki
2009-03-23 6:17 ` KAMEZAWA Hiroyuki
2009-03-23 6:35 ` KOSAKI Motohiro
2009-03-23 8:24 ` Balbir Singh
2009-03-23 9:12 ` KOSAKI Motohiro
2009-03-23 9:23 ` Balbir Singh
2009-03-23 8:35 ` Balbir Singh
2009-03-23 8:52 ` KAMEZAWA Hiroyuki
2009-03-23 9:46 ` Balbir Singh
2009-03-23 9:41 ` Balbir Singh
2009-03-23 8:31 ` KAMEZAWA Hiroyuki
2009-03-24 17:34 ` Balbir Singh
2009-03-24 23:55 ` KAMEZAWA Hiroyuki
2009-03-25 3:42 ` KAMEZAWA Hiroyuki
2009-03-25 4:02 ` Balbir Singh
2009-03-25 4:05 ` KAMEZAWA Hiroyuki
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=20090323041253.GH24227@balbir.in.ibm.com \
--to=balbir@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=lizf@cn.fujitsu.com \
--cc=riel@redhat.com \
--cc=yamamoto@valinux.co.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).