From: David Rientjes <rientjes@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
linux-mm@kvack.org
Subject: Re: [patch] memcg: give current access to memory reserves if it's trying to die
Date: Fri, 18 Mar 2011 13:32:46 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1103181321580.27112@chino.kir.corp.google.com> (raw)
In-Reply-To: <20110317165319.07be118e.akpm@linux-foundation.org>
On Thu, 17 Mar 2011, Andrew Morton wrote:
> > diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> > --- a/mm/oom_kill.c
> > +++ b/mm/oom_kill.c
> > @@ -537,6 +537,17 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask)
> > unsigned int points = 0;
> > struct task_struct *p;
> >
> > + /*
> > + * If current has a pending SIGKILL, then automatically select it. The
> > + * goal is to allow it to allocate so that it may quickly exit and free
> > + * its memory.
> > + */
> > + if (fatal_signal_pending(current)) {
> > + set_thread_flag(TIF_MEMDIE);
> > + boost_dying_task_prio(current, NULL);
> > + return;
> > + }
> > +
> > check_panic_on_oom(CONSTRAINT_MEMCG, gfp_mask, 0, NULL);
> > limit = mem_cgroup_get_limit(mem) >> PAGE_SHIFT;
> > read_lock(&tasklist_lock);
>
> The code duplication seems a bit gratuitous.
>
I thought it was small enough to appear in two functions as opposed to
doing something like
static bool oom_current_has_sigkill(void)
{
if (fatal_signal_pending(current)) {
set_thread_flag(TIF_MEMDIE);
boost_dying_task_prio(current, NULL);
return true;
}
return false;
}
then doing
if (oom_current_has_sigkill())
return;
in mem_cgroup_out_of_memory() and out_of_memory(). If you'd prefer
oom_current_has_sigkill(), let me know and I'll propose an alternate
version.
> Was it deliberate that mem_cgroup_out_of_memory() ignores the oom
> notifier callbacks?
>
Yes, the memory controller requires that something be killed (or, in the
above case, simply allowing something to exit) to return under the hard
limit; that's why we automatically kill current if nothing else eligible
is found in select_bad_process(). Using oom notifier callbacks wouldn't
guarantee there was freeing that would impact this memcg anyway.
> (Why does that notifier list exist at all? Wouldn't it be better to do
> this via a vmscan shrinker? Perhaps altered to be passed the scanning
> priority?)
>
A vmscan shrinker seems more appropriate in the page allocator and not the
oom killer before we call out_of_memory() and, as already mentioned,
oom_notify_list doesn't do much at all (and is the wrong thing to do for
cpusets or mempolicy ooms). I've been reluctant to remove it because it
doesn't have any impact for our systems but was obviously introduced for
somebody's advantage in a rather unintrusive way.
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-03-18 20:33 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-08 0:24 [patch] memcg: add oom killer delay David Rientjes
2011-02-08 1:55 ` KAMEZAWA Hiroyuki
2011-02-08 2:13 ` David Rientjes
2011-02-08 2:13 ` KAMEZAWA Hiroyuki
2011-02-08 2:20 ` KAMEZAWA Hiroyuki
2011-02-08 2:37 ` David Rientjes
2011-02-08 10:25 ` Balbir Singh
2011-02-09 22:19 ` David Rientjes
2011-02-10 0:04 ` KAMEZAWA Hiroyuki
2011-02-16 3:15 ` David Rientjes
2011-02-20 22:19 ` David Rientjes
2011-02-23 23:08 ` Andrew Morton
2011-02-24 0:13 ` KAMEZAWA Hiroyuki
2011-02-24 0:51 ` David Rientjes
2011-03-03 20:11 ` David Rientjes
2011-03-03 21:52 ` Andrew Morton
2011-03-08 0:12 ` David Rientjes
2011-03-08 0:29 ` Andrew Morton
2011-03-08 0:36 ` David Rientjes
2011-03-08 0:51 ` Andrew Morton
2011-03-08 1:02 ` David Rientjes
2011-03-08 1:18 ` Andrew Morton
2011-03-08 1:33 ` David Rientjes
2011-03-08 2:51 ` KAMEZAWA Hiroyuki
2011-03-08 3:07 ` David Rientjes
2011-03-08 3:13 ` KAMEZAWA Hiroyuki
2011-03-08 3:56 ` David Rientjes
2011-03-08 4:17 ` KAMEZAWA Hiroyuki
2011-03-08 5:30 ` David Rientjes
2011-03-08 5:49 ` KAMEZAWA Hiroyuki
2011-03-08 23:49 ` David Rientjes
2011-03-09 6:04 ` KAMEZAWA Hiroyuki
2011-03-09 6:44 ` David Rientjes
2011-03-09 7:16 ` KAMEZAWA Hiroyuki
2011-03-09 21:12 ` David Rientjes
2011-03-09 21:27 ` [patch] memcg: give current access to memory reserves if it's trying to die David Rientjes
2011-03-09 23:30 ` KAMEZAWA Hiroyuki
2011-03-17 23:37 ` David Rientjes
2011-03-17 23:53 ` Andrew Morton
2011-03-18 4:35 ` KAMEZAWA Hiroyuki
2011-03-18 5:17 ` Andrew Morton
2011-03-18 5:58 ` KAMEZAWA Hiroyuki
2011-03-18 20:36 ` David Rientjes
2011-03-18 20:32 ` David Rientjes [this message]
2011-03-08 3:06 ` [patch] memcg: add oom killer delay 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=alpine.DEB.2.00.1103181321580.27112@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=nishimura@mxp.nes.nec.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