From: Andrea Arcangeli <andrea@suse.de>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Rik van Riel <riel@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: VM fixes [4/4]
Date: Sun, 2 Jan 2005 16:51:07 +0100 [thread overview]
Message-ID: <20050102155107.GB5164@dualathlon.random> (raw)
In-Reply-To: <1104226960.27708.321.camel@tglx.tec.linutronix.de>
On Tue, Dec 28, 2004 at 10:42:40AM +0100, Thomas Gleixner wrote:
> On Mon, 2004-12-27 at 08:38 -0500, Rik van Riel wrote:
> > On Fri, 24 Dec 2004, Andrea Arcangeli wrote:
> >
> > > --- x/mm/oom_kill.c.orig 2004-12-24 17:53:50.807536152 +0100
> > > +++ x/mm/oom_kill.c 2004-12-24 18:01:19.903263224 +0100
> > > @@ -45,18 +45,30 @@
> > > unsigned long badness(struct task_struct *p, unsigned long uptime)
> > > {
> >
> > > /*
> > > + * Processes which fork a lot of child processes are likely
> > > + * a good choice. We add the vmsize of the childs if they
> > > + * have an own mm. This prevents forking servers to flood the
> > > + * machine with an endless amount of childs
> > > + */
> >
> > I'm not sure about this one. You'll end up killing the
> > parent httpd and sshd, instead of letting them hang around
> > so the system can recover by itself after the memory use
> > spike is over.
>
> The selection is adding the child VM size, but the killer itself kills a
> child process first, so the parent is not the one which is killed in the
> first place.
The other part of Thomas's change is this one:
+static struct mm_struct *oom_kill_process(task_t *p)
+{
+ struct mm_struct *mm;
+ struct task_struct *c;
+ struct list_head *tsk;
+
+ /* Try to kill a child first */
+ list_for_each(tsk, &p->children) {
+ c = list_entry(tsk, struct task_struct, sibling);
+ if (c->mm == p->mm)
+ continue;
+ mm = oom_kill_task(c);
+ if (mm)
+ return mm;
+ }
+ return oom_kill_task(p);
+}
Thomas's changes worked better than previous code so far, he can clearly
identify forkbombs or services spread across multiple processes.
Without these changes it was trivial to fool the oom killer and lead to
sshd and other services being killed, so his changes makes lots of sense
to me. It seems certainly better than the current code.
Actually the only question I made to him is why he doesn't kill the
"parent" instead of adding the above code, that is what is being
discussed here, but I was suggesting it as a good thing, not as a bad
thing. If we have a fork bomb killing the master parent would be
optimal. What he does above by killing the childs first is a lot more
conservative and I'm fine with it as well.
next prev parent reply other threads:[~2005-01-02 15:52 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-24 17:41 VM fixes [4/4] Andrea Arcangeli
2004-12-24 18:01 ` David S. Miller
2004-12-24 18:22 ` Andrea Arcangeli
2004-12-24 20:55 ` David S. Miller
2004-12-24 21:25 ` William Lee Irwin III
2004-12-24 23:52 ` William Lee Irwin III
2004-12-24 23:55 ` David S. Miller
2004-12-24 23:41 ` Linus Torvalds
2004-12-25 2:27 ` Andrea Arcangeli
2004-12-25 3:24 ` VM fixes [PF_MEMDIE to TIF_MEMDIE] [5/4] Andrea Arcangeli
2004-12-25 14:53 ` VM fixes [->used_math to PF_USED_MATH] [6/4] Andrea Arcangeli
2004-12-27 7:03 ` Andy Isaacson
2005-01-02 15:41 ` Andrea Arcangeli
2005-01-08 17:17 ` William Lee Irwin III
2004-12-25 0:06 ` VM fixes [4/4] Mitchell Blank Jr
2004-12-25 2:37 ` Andrea Arcangeli
2004-12-24 23:32 ` Linus Torvalds
2004-12-27 13:38 ` Rik van Riel
2004-12-28 9:42 ` Thomas Gleixner
2005-01-02 15:51 ` Andrea Arcangeli [this message]
2005-01-02 16:44 ` Rik van Riel
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=20050102155107.GB5164@dualathlon.random \
--to=andrea@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
/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