From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
To: David Rientjes <rientjes@google.com>
Cc: kosaki.motohiro@jp.fujitsu.com,
Andrew Morton <akpm@linux-foundation.org>,
Rik van Riel <riel@redhat.com>, Nick Piggin <npiggin@suse.de>,
Oleg Nesterov <oleg@redhat.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
linux-mm@kvack.org
Subject: Re: [patch -mm 01/18] oom: filter tasks not sharing the same cpuset
Date: Sun, 13 Jun 2010 20:24:52 +0900 (JST) [thread overview]
Message-ID: <20100613180405.6178.A69D9226@jp.fujitsu.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1006081135510.18848@chino.kir.corp.google.com>
> On Tue, 8 Jun 2010, KOSAKI Motohiro wrote:
>
> > > @@ -267,6 +259,8 @@ static struct task_struct *select_bad_process(unsigned long *ppoints,
> > > continue;
> > > if (mem && !task_in_mem_cgroup(p, mem))
> > > continue;
> > > + if (!has_intersects_mems_allowed(p))
> > > + continue;
> > >
> > > /*
> > > * This task already has access to memory reserves and is
> >
> > now we have three places of oom filtering
> > (1) select_bad_process
>
> Done.
>
> > (2) dump_tasks
>
> dump_tasks() has never filtered on this, it's possible for tasks is other
> cpusets to allocate memory on our nodes.
I have no objection because it's policy matter. but if so, dump_tasks()
should display mem_allowed mask too, probably.
otherwise, end-user can't understand why badness but not mem intersected task
didn't killed.
> > (3) oom_kill_task (when oom_kill_allocating_task==1 only)
> >
>
> Why would care about cpuset attachment in oom_kill_task()? You mean
> oom_kill_process() to filter the children list?
Ah, intersting question. OK, we have to discuss oom_kill_allocating_task
design at first.
First of All, oom_kill_process() to filter the children list and this issue
are independent and unrelated. My patch was not correct too.
Now, oom_kill_allocating_task basic logic is here. It mean, if oom_kill_process()
return 0, oom kill finished successfully. but if oom_kill_process() return 1,
fallback to normall __out_of_memory().
===================================================
static void __out_of_memory(gfp_t gfp_mask, int order, nodemask_t *nodemask)
{
struct task_struct *p;
unsigned long points;
if (sysctl_oom_kill_allocating_task)
if (!oom_kill_process(current, gfp_mask, order, 0, NULL, nodemask,
"Out of memory (oom_kill_allocating_task)"))
return;
retry:
When oom_kill_process() return 1?
I think It should be
- current is OOM_DISABLE
- current have no intersected CPUSET
- current is KTHREAD
- etc etc..
It mean, consist rule of !oom_kill_allocating_task case.
So, my previous patch didn't care to conflict "oom: sacrifice child with
highest badness score for parent" patch. Probably right way is
static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
unsigned long points, struct mem_cgroup *mem,
nodemask_t *nodemask, const char *message)
{
struct task_struct *c;
struct task_struct *t = p;
struct task_struct *victim = p;
unsigned long victim_points = 0;
struct timespec uptime;
+ /* This process is not oom killable, we need to retry to select
+ bad process */
+ if (oom_unkillable(c, mem, nodemask))
+ return 1;
if (printk_ratelimit())
dump_header(p, gfp_mask, order, mem, nodemask);
pr_err("%s: Kill process %d (%s) with score %lu or sacrifice child\n",
message, task_pid_nr(p), p->comm, points);
or something else.
What do you think?
--
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:[~2010-06-13 11:24 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-01 7:18 [patch -mm 00/18] oom killer rewrite David Rientjes
2010-06-01 7:18 ` [patch -mm 01/18] oom: filter tasks not sharing the same cpuset David Rientjes
2010-06-01 7:20 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 18:37 ` David Rientjes
2010-06-13 11:24 ` KOSAKI Motohiro [this message]
2010-06-17 3:33 ` David Rientjes
2010-06-21 11:45 ` KOSAKI Motohiro
2010-06-21 11:45 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 18:43 ` David Rientjes
2010-06-08 23:25 ` Andrew Morton
2010-06-08 23:54 ` David Rientjes
2010-06-09 0:06 ` Andrew Morton
2010-06-09 1:07 ` David Rientjes
2010-06-13 11:24 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 02/18] oom: sacrifice child with highest badness score for parent David Rientjes
2010-06-01 7:39 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 18:41 ` David Rientjes
2010-06-13 11:24 ` KOSAKI Motohiro
2010-06-14 8:54 ` David Rientjes
2010-06-14 11:08 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 18:45 ` David Rientjes
2010-06-01 7:18 ` [patch -mm 03/18] oom: select task from tasklist for mempolicy ooms David Rientjes
2010-06-01 7:39 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 23:28 ` Andrew Morton
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 04/18] oom: extract panic helper function David Rientjes
2010-06-01 7:33 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 05/18] oom: remove special handling for pagefault ooms David Rientjes
2010-06-01 7:34 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 06/18] oom: move sysctl declarations to oom.h David Rientjes
2010-06-01 7:34 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 07/18] oom: enable oom tasklist dump by default David Rientjes
2010-06-01 7:36 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 08/18] oom: badness heuristic rewrite David Rientjes
2010-06-01 7:36 ` KOSAKI Motohiro
2010-06-01 18:44 ` David Rientjes
2010-06-02 13:54 ` KOSAKI Motohiro
2010-06-02 21:20 ` David Rientjes
2010-06-03 23:10 ` Andrew Morton
2010-06-03 23:53 ` KAMEZAWA Hiroyuki
2010-06-04 0:04 ` Andrew Morton
2010-06-04 0:20 ` KAMEZAWA Hiroyuki
2010-06-04 5:57 ` KAMEZAWA Hiroyuki
2010-06-04 9:22 ` David Rientjes
2010-06-04 9:19 ` David Rientjes
2010-06-04 9:43 ` Oleg Nesterov
2010-06-04 10:54 ` KOSAKI Motohiro
2010-06-04 20:57 ` David Rientjes
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 23:47 ` Andrew Morton
2010-06-17 3:28 ` David Rientjes
2010-06-01 7:46 ` Nick Piggin
2010-06-01 18:56 ` David Rientjes
2010-06-02 13:54 ` KOSAKI Motohiro
2010-06-02 21:23 ` David Rientjes
2010-06-03 0:05 ` KAMEZAWA Hiroyuki
2010-06-03 6:44 ` David Rientjes
2010-06-03 3:07 ` KOSAKI Motohiro
2010-06-03 6:48 ` David Rientjes
2010-06-03 23:15 ` Andrew Morton
2010-06-04 10:54 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 09/18] oom: add forkbomb penalty to badness heuristic David Rientjes
2010-06-01 7:37 ` KOSAKI Motohiro
2010-06-01 18:57 ` David Rientjes
2010-06-03 20:33 ` David Rientjes
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 10/18] oom: deprecate oom_adj tunable David Rientjes
2010-06-01 7:37 ` KOSAKI Motohiro
2010-06-01 7:18 ` [patch -mm 11/18] oom: avoid oom killer for lowmem allocations David Rientjes
2010-06-01 7:38 ` KOSAKI Motohiro
2010-06-08 11:41 ` KOSAKI Motohiro
2010-06-08 18:38 ` David Rientjes
2010-06-01 7:18 ` [patch -mm 12/18] oom: remove unnecessary code and cleanup David Rientjes
2010-06-01 7:40 ` KOSAKI Motohiro
2010-06-01 18:58 ` David Rientjes
2010-06-01 7:19 ` [patch -mm 13/18] oom: avoid race for oom killed tasks detaching mm prior to exit David Rientjes
2010-06-01 7:40 ` KOSAKI Motohiro
2010-06-01 18:59 ` David Rientjes
2010-06-01 20:43 ` Oleg Nesterov
2010-06-01 21:19 ` David Rientjes
2010-06-02 0:28 ` KAMEZAWA Hiroyuki
2010-06-02 9:49 ` David Rientjes
2010-06-02 10:46 ` Nick Piggin
2010-06-02 21:35 ` David Rientjes
2010-06-02 13:54 ` KOSAKI Motohiro
2010-06-01 7:19 ` [patch -mm 14/18] oom: check PF_KTHREAD instead of !mm to skip kthreads David Rientjes
2010-06-01 7:41 ` KOSAKI Motohiro
2010-06-01 7:19 ` [patch -mm 15/18] oom: introduce find_lock_task_mm() to fix !mm false positives David Rientjes
2010-06-01 7:41 ` KOSAKI Motohiro
2010-06-01 7:19 ` [patch -mm 16/18] oom: give current access to memory reserves if it has been killed David Rientjes
2010-06-01 7:44 ` KOSAKI Motohiro
2010-06-01 7:19 ` [patch -mm 17/18] oom: avoid sending exiting tasks a SIGKILL David Rientjes
2010-06-01 7:19 ` [patch -mm 18/18] oom: clean up oom_kill_task() David Rientjes
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=20100613180405.6178.A69D9226@jp.fujitsu.com \
--to=kosaki.motohiro@jp.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
--cc=oleg@redhat.com \
--cc=riel@redhat.com \
--cc=rientjes@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox