From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: balbir@linux.vnet.ibm.com
Cc: nishimura@mxp.nes.nec.co.jp,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>, stable <stable@kernel.org>,
David Rientjes <rientjes@google.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Subject: Re: [BUGFIX][PATCH -mmotm] memcg: avoid oom-killing innocent task in case of use_hierarchy
Date: Wed, 25 Nov 2009 09:07:56 +0900 [thread overview]
Message-ID: <20091125090756.690d7a68.kamezawa.hiroyu@jp.fujitsu.com> (raw)
In-Reply-To: <20091124170402.GB3365@balbir.in.ibm.com>
On Tue, 24 Nov 2009 22:34:02 +0530
Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
> * Daisuke Nishimura <d-nishimura@mtf.biglobe.ne.jp> [2009-11-24 23:00:29]:
>
> > On Tue, 24 Nov 2009 19:01:54 +0530
> > Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
> >
> > > On Tue, Nov 24, 2009 at 11:27 AM, Daisuke Nishimura
> > > <nishimura@mxp.nes.nec.co.jp> wrote:
> > > > task_in_mem_cgroup(), which is called by select_bad_process() to check whether
> > > > a task can be a candidate for being oom-killed from memcg's limit, checks
> > > > "curr->use_hierarchy"("curr" is the mem_cgroup the task belongs to).
> > > >
> > > > But this check return true(it's false positive) when:
> > > >
> > > > A A A A <some path>/00 A A A A A use_hierarchy == 0 A A A <- hitting limit
> > > > A A A A A <some path>/00/aa A A use_hierarchy == 1 A A A <- "curr"
> > > >
> > > > This leads to killing an innocent task in 00/aa. This patch is a fix for this
> > > > bug. And this patch also fixes the arg for mem_cgroup_print_oom_info(). We
> > > > should print information of mem_cgroup which the task being killed, not current,
> > > > belongs to.
> > > >
> > >
> > > Quick Question: What happens if <some path>/00 has no tasks in it
> > > after your patches?
> > >
> > Nothing would happen because <some path>/00 never hit its limit.
>
> Why not? I am talking of a scenario where <some path>/00 is set to a
> limit (similar to your example) and hits its limit, but the groups
> under it have no limits, but tasks. Shouldn't we be scanning
> <some path>/00/aa as well?
>
No. <some path>/00 == use_hierarchy=0 means _all_ children's accounting
information is never added up to <some path>/00.
If there is no task in <some path>/00, it means <some path>/00 contains only
file cache and not-migrated rss. To hit limit, the admin has to make
memory.(memsw).limit_in_bytes smaller. But in this case, oom is not called.
-ENOMEM is returned to users. IIUC.
> >
> > The bug that this patch fixes is:
> >
> > - create a dir <some path>/00 and set some limits.
> > - create a sub dir <some path>/00/aa w/o any limits, and enable hierarchy.
> > - run some programs in both in 00 and 00/aa. programs in 00 should be
> > big enough to cause oom by its limit.
> > - when oom happens by 00's limit, tasks in 00/aa can also be killed.
> >
>
> To be honest, the last part is fair, specifically if 00/aa has a task
> that is really the heaviest task as per the oom logic. no? Are you
> suggesting that only tasks in <some path>/00 should be selected by the
> oom logic?
>
<some path>/00 and <some path>/00/aa has completely different accounting set.
There are no hierarchy relationship. The directory tree shows "virtual"
hierarchy but in reality, their relationship is horizontal rather than hierarchycal.
So, killing tasks only in <some path>/00 is better.
Thanks,
-Kame
--
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-11-25 0:10 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-24 5:57 Daisuke Nishimura
2009-11-24 7:28 ` [BUGFIX][PATCH -stable] " Daisuke Nishimura
2009-11-25 0:00 ` KAMEZAWA Hiroyuki
2009-11-25 5:32 ` [BUGFIX][PATCH v2 " Daisuke Nishimura
2009-11-25 5:50 ` KAMEZAWA Hiroyuki
2009-11-25 20:45 ` Andrew Morton
2009-11-26 0:11 ` [BUGFIX][PATCH v2 -mmotm] " Daisuke Nishimura
2009-12-17 0:47 ` [BUGFIX][PATCH v2 -stable] " Daisuke Nishimura
2010-01-04 22:28 ` [stable] " Greg KH
2010-01-05 3:26 ` [stable][BUGFIX][PATCH v3] " Daisuke Nishimura
2010-01-05 19:26 ` [stable] [BUGFIX][PATCH " Greg KH
2010-01-05 19:33 ` patch memcg-avoid-oom-killing-innocent-task-in-case-of-use_hierarchy.patch added to 2.6.31-stable tree gregkh
2009-11-25 4:08 ` [BUGFIX][PATCH -stable] memcg: avoid oom-killing innocent task in case of use_hierarchy Balbir Singh
2009-11-24 13:31 ` [BUGFIX][PATCH -mmotm] " Balbir Singh
2009-11-24 14:00 ` Daisuke Nishimura
2009-11-24 17:04 ` Balbir Singh
2009-11-24 23:49 ` Daisuke Nishimura
2009-11-25 3:29 ` Balbir Singh
2009-11-25 0:07 ` KAMEZAWA Hiroyuki [this message]
2009-11-25 4:09 ` Balbir Singh
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=20091125090756.690d7a68.kamezawa.hiroyu@jp.fujitsu.com \
--to=kamezawa.hiroyu@jp.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nishimura@mxp.nes.nec.co.jp \
--cc=rientjes@google.com \
--cc=stable@kernel.org \
/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