From: Nikanth Karthikesan <knikanth@suse.de>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: "David Rientjes" <rientjes@google.com>,
containers@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, "Arve Hjønnevåg" <arve@android.com>,
"Evgeniy Polyakov" <zbr@ioremap.net>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Chris Snook" <csnook@redhat.com>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Paul Menage" <menage@google.com>,
"Alan Cox" <alan@lxorguk.ukuu.org.uk>
Subject: Re: [RFC] [PATCH] Cgroup based OOM killer controller
Date: Thu, 22 Jan 2009 10:42:50 +0530 [thread overview]
Message-ID: <200901221042.51622.knikanth@suse.de> (raw)
In-Reply-To: <20090122115324.b954c6a1.kamezawa.hiroyu@jp.fujitsu.com>
On Thursday 22 January 2009 08:23:24 KAMEZAWA Hiroyuki wrote:
> On Wed, 21 Jan 2009 12:49:50 -0800 (PST)
>
> David Rientjes <rientjes@google.com> wrote:
> > On Wed, 21 Jan 2009, Nikanth Karthikesan wrote:
> > > This is a container group based approach to override the oom killer
> > > selection without losing all the benefits of the current oom killer
> > > heuristics and oom_adj interface.
> > >
> > > It adds a tunable oom.victim to the oom cgroup. The oom killer will
> > > kill the process using the usual badness value but only within the
> > > cgroup with the maximum value for oom.victim before killing any process
> > > from a cgroup with a lesser oom.victim number. Oom killing could be
> > > disabled by setting oom.victim=0.
> >
> > This doesn't help in memcg or cpuset constrained oom conditions, which
> > still go through select_bad_process().
> >
> > If the oom.victim value is high for a specific cgroup and a memory
> > controller oom occurs in a disjoint cgroup, for example, it's possible to
> > needlessly kill tasks. Obviously that is up to the administrator to
> > configure, but may not be his or her desire for system-wide oom
> > conditions.
>
> Hmm...after this patch, select_bad_process's filter to select process will
> be
>
> ==
> 1. ->mm is NULL ? => don't select this
> 2. is init task ? => don't select this
> 3. is under specified memcg ? => don't select this
> 4. marked as MEMDIE ? => return -1.
> 5. PF_EXITING? => select this.
> 6. OOM_DISABLE ? => don't select this
> points = badness(p, uptime.tv_sec);
> 7. adjust point & select logic depends on OOM cgroup
> ==
>
> Not looks good ;)
>
Yes, we do throw away a lot of needless work done. But this is how we already
do and this is not a regression. But this could be used to improve the OOM
killer's speed.
> > It may be preferred to kill tasks in a specific cgroup first when the
> > entire system is out of memory or kill tasks within a cgroup attached to
> > a memory controller when it is oom.
>
> I agree here.
>
> Above filter logic should be
> ==
> current_victim_level++;
> 1. p is under oom cgroup of victim_level > current_victim_level => don't
> select this. 2. ->mm is NULL ? => don't select this
> 3. is init task ? => don't select this
> 4. is under specified memcg ? => don't select this
> 5. marked as MEMDIE ? => return -1.
> 6. PF_EXITING? => select this.
> 7. OOM_DISABLE ? => don't select this
> points = badness(p, uptime.tv_sec)
> ==
> But this will be too slow.
>
> I think do_each_thread() in select_bad_process() should be replaced with
> a routine like this, finally.
> ==
> for_each_oom_cgroup_in_victim_value_order() {
> for_each_threads_in_oom_cgroup(oom) {
> select one bad thread.
> }
> if (selected_one_is_enough_bad ?)
> return selected_one;
> }
> ==
>
Yes.
> And this can be a help for "spped up OOM killer" problem.
>
Yes.
Thanks
Nikanth
next prev parent reply other threads:[~2009-01-22 5:15 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-21 11:08 [RFC] [PATCH] Cgroup based OOM killer controller Nikanth Karthikesan
2009-01-21 13:17 ` Evgeniy Polyakov
2009-01-21 15:24 ` Nikanth Karthikesan
2009-01-21 20:49 ` David Rientjes
2009-01-22 2:53 ` KAMEZAWA Hiroyuki
2009-01-22 5:12 ` Nikanth Karthikesan [this message]
2009-01-22 5:12 ` Nikanth Karthikesan
2009-01-22 8:43 ` David Rientjes
2009-01-22 9:23 ` Nikanth Karthikesan
2009-01-22 9:39 ` David Rientjes
2009-01-22 10:10 ` Nikanth Karthikesan
2009-01-22 10:18 ` David Rientjes
2009-01-22 9:50 ` Evgeniy Polyakov
2009-01-22 10:00 ` David Rientjes
2009-01-22 10:14 ` Evgeniy Polyakov
2009-01-22 10:27 ` David Rientjes
2009-01-22 13:21 ` Evgeniy Polyakov
2009-01-22 20:28 ` David Rientjes
2009-01-22 21:06 ` Evgeniy Polyakov
2009-01-22 21:35 ` David Rientjes
2009-01-22 22:04 ` Evgeniy Polyakov
2009-01-22 22:28 ` David Rientjes
2009-01-22 22:53 ` Evgeniy Polyakov
2009-01-22 23:25 ` Evgeniy Polyakov
2009-01-27 23:55 ` Paul Menage
2009-01-23 9:45 ` Nikanth Karthikesan
2009-01-23 10:33 ` David Rientjes
2009-01-23 14:56 ` Nikanth Karthikesan
2009-01-23 20:44 ` David Rientjes
2009-01-27 10:20 ` Nikanth Karthikesan
2009-01-27 10:53 ` David Rientjes
2009-01-27 11:08 ` Nikanth Karthikesan
2009-01-27 11:21 ` David Rientjes
2009-01-27 11:37 ` Nikanth Karthikesan
2009-01-27 20:29 ` David Rientjes
2009-01-28 1:00 ` Paul Menage
2009-01-29 15:48 ` Nikanth Karthikesan
2009-01-22 3:28 ` KAMEZAWA Hiroyuki
2009-01-22 5:13 ` Nikanth Karthikesan
2009-01-22 5:27 ` KAMEZAWA Hiroyuki
2009-01-22 6:11 ` Nikanth Karthikesan
2009-01-22 5:39 ` Arve Hjønnevåg
2009-01-22 6:12 ` Nikanth Karthikesan
2009-01-22 6:29 ` Arve Hjønnevåg
2009-01-22 6:42 ` Nikanth Karthikesan
2009-01-26 19:54 ` Balbir Singh
2009-01-26 19:56 ` Alan Cox
2009-01-27 7:02 ` KOSAKI Motohiro
2009-01-27 7:26 ` Balbir Singh
2009-01-27 7:39 ` David Rientjes
2009-01-27 7:44 ` KOSAKI Motohiro
2009-01-27 7:51 ` David Rientjes
2009-01-27 9:31 ` Evgeniy Polyakov
2009-01-27 9:37 ` David Rientjes
2009-01-27 13:40 ` Evgeniy Polyakov
2009-01-27 20:37 ` David Rientjes
2009-01-27 21:51 ` Evgeniy Polyakov
2009-01-27 10:40 ` KOSAKI Motohiro
2009-01-27 13:45 ` Evgeniy Polyakov
2009-01-27 15:40 ` Balbir Singh
2009-01-27 21:54 ` Evgeniy Polyakov
2009-01-27 20:41 ` David Rientjes
2009-01-27 21:55 ` Evgeniy Polyakov
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=200901221042.51622.knikanth@suse.de \
--to=knikanth@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arve@android.com \
--cc=containers@lists.linux-foundation.org \
--cc=csnook@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
--cc=rientjes@google.com \
--cc=torvalds@linux-foundation.org \
--cc=zbr@ioremap.net \
/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