linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: David Rientjes <rientjes@google.com>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: Rik van Riel <riel@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Nick Piggin <npiggin@suse.de>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Lubos Lunak <l.lunak@suse.cz>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [patch 4/7 -mm] oom: badness heuristic rewrite
Date: Mon, 15 Feb 2010 13:54:39 -0800 (PST)	[thread overview]
Message-ID: <alpine.DEB.2.00.1002151347470.26927@chino.kir.corp.google.com> (raw)
In-Reply-To: <28c262361002121845w459d0fa0l55a58552c3a6081e@mail.gmail.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2479 bytes --]

On Sat, 13 Feb 2010, Minchan Kim wrote:

> > The oom killer is not the appropriate place for a kernel forkbomb policy
> > to be implemented, you'd need to address that concern in the scheduler.
> 
> I agree. but your's patch try to implement policy(avg rss of children < HZ)
> in oom killer as well as detection.
> so I pointed out that.

That's not what's used, we detect whether a child should be included in 
the forkbomb count by checking for two traits: (i) it doesn't share an 
->mm with the parent, otherwise it wouldn't free any memory unless the 
parent was killed as well, and (ii) its total runtime is less than a 
second since threads in forkbomb scenarios don't typically get any 
runtime.  The _penalization_ is then the average rss of those children 
times how many times the count exceeds oom_forkbomb_thres.

> I think if we want to implement it, we also consider above scenario.
> As you said, it would be better to detect forkbom in scheduler.
> Then, let's remove forkbomb detection in OOM killer.
> Afterward, we can implement it in scheduler and can use it in OOM killer.
> 

We're not enforcing a global, system-wide forkbomb policy in the oom 
killer, but we do need to identify tasks that fork a very large number of 
tasks to break ties with other tasks: in other words, it would not be 
helpful to kill an application that has been running for weeks because 
another application with the same or less memory usage has forked 1000 
children and has caused an oom condition.  That unfairly penalizes the 
former application that is actually doing work.

Again, I'd encourage you to look at this as only a slight penalization 
rather than a policy that strictly needs to be enforced.  If it were 
strictly enforced, it would be a prerequisite for selection if such a task 
were to exist; in my implementation, it is part of the heuristic.

> > That doesn't work with Rik's example of a webserver that forks a large
> > number of threads to handle client connections. A It is _always_ better to
> > kill a child instead of making the entire webserver unresponsive.
> 
> In such case, admin have to handle it by oom_forkbom_thres.
> Isn't it your goal?
> 

oom_forkbomb_thres has a default value, which is 1000, so it should be 
enabled by default.

> My suggestion is how handle buggy forkbomb processes which make
> system almost hang by user's mistake. :)
> 

I don't think you've given a clear description (or, even better, a patch) 
of your suggestion.

  reply	other threads:[~2010-02-15 21:54 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-10 16:32 [patch 0/7 -mm] oom killer rewrite David Rientjes
2010-02-10 16:32 ` [patch 1/7 -mm] oom: filter tasks not sharing the same cpuset David Rientjes
2010-02-10 17:08   ` Rik van Riel
2010-02-11 23:52   ` KAMEZAWA Hiroyuki
2010-02-15  2:56   ` KOSAKI Motohiro
2010-02-15 22:06     ` David Rientjes
2010-02-16  4:52       ` KOSAKI Motohiro
2010-02-16  6:01         ` KOSAKI Motohiro
2010-02-16  7:03         ` Nick Piggin
2010-02-16  8:49           ` David Rientjes
2010-02-16  9:04             ` Nick Piggin
2010-02-16  9:10               ` David Rientjes
2010-02-16  8:46         ` David Rientjes
2010-02-10 16:32 ` [patch 2/7 -mm] oom: sacrifice child with highest badness score for parent David Rientjes
2010-02-10 20:52   ` Rik van Riel
2010-02-12  0:00   ` KAMEZAWA Hiroyuki
2010-02-12  0:15     ` David Rientjes
2010-02-13  2:49   ` Minchan Kim
2010-02-15  3:08   ` KOSAKI Motohiro
2010-02-10 16:32 ` [patch 3/7 -mm] oom: select task from tasklist for mempolicy ooms David Rientjes
2010-02-10 22:47   ` Rik van Riel
2010-02-15  5:03   ` KOSAKI Motohiro
2010-02-15 22:11     ` David Rientjes
2010-02-16  5:15       ` KOSAKI Motohiro
2010-02-16 21:52         ` David Rientjes
2010-02-17  0:48           ` David Rientjes
2010-02-17  1:13             ` KOSAKI Motohiro
2010-02-10 16:32 ` [patch 4/7 -mm] oom: badness heuristic rewrite David Rientjes
2010-02-11  4:10   ` Rik van Riel
2010-02-11  9:14     ` David Rientjes
2010-02-11 15:07       ` Nick Bowler
2010-02-11 21:01         ` David Rientjes
2010-02-11 21:43       ` Andrew Morton
2010-02-11 21:51         ` David Rientjes
2010-02-11 22:31           ` Andrew Morton
2010-02-11 22:42             ` David Rientjes
2010-02-11 23:11               ` Andrew Morton
2010-02-11 23:31                 ` David Rientjes
2010-02-11 23:37                   ` Andrew Morton
2010-02-12 13:56       ` Minchan Kim
2010-02-12 21:00         ` David Rientjes
2010-02-13  2:45           ` Minchan Kim
2010-02-15 21:54             ` David Rientjes [this message]
2010-02-16 13:14               ` Minchan Kim
2010-02-16 21:41                 ` David Rientjes
2010-02-17  7:41                   ` Minchan Kim
2010-02-17  9:23                     ` David Rientjes
2010-02-17 13:08                       ` Minchan Kim
2010-02-15  8:05   ` KOSAKI Motohiro
2010-02-10 16:32 ` [patch 5/7 -mm] oom: replace sysctls with quick mode David Rientjes
2010-02-12  0:26   ` KAMEZAWA Hiroyuki
2010-02-12  9:58     ` David Rientjes
2010-02-15  8:09   ` KOSAKI Motohiro
2010-02-15 22:15     ` David Rientjes
2010-02-16  5:25       ` KOSAKI Motohiro
2010-02-16  9:04         ` David Rientjes
2010-02-10 16:32 ` [patch 6/7 -mm] oom: avoid oom killer for lowmem allocations David Rientjes
2010-02-11  4:13   ` Rik van Riel
2010-02-11  9:19     ` David Rientjes
2010-02-11 14:08       ` Rik van Riel
2010-02-12  1:28   ` KAMEZAWA Hiroyuki
2010-02-12 10:06     ` David Rientjes
2010-02-15  0:09       ` KAMEZAWA Hiroyuki
2010-02-15 22:01         ` David Rientjes
2010-02-15  8:29   ` KOSAKI Motohiro
2010-02-10 16:32 ` [patch 7/7 -mm] oom: remove unnecessary code and cleanup David Rientjes
2010-02-12  0:12   ` KAMEZAWA Hiroyuki
2010-02-12  0:21     ` David Rientjes
2010-02-15  8:31       ` KOSAKI Motohiro
2010-02-15  2:51 ` [patch 0/7 -mm] oom killer rewrite KOSAKI Motohiro

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.1002151347470.26927@chino.kir.corp.google.com \
    --to=rientjes@google.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=l.lunak@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=npiggin@suse.de \
    --cc=riel@redhat.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