public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Protecting processes from the OOM killer
@ 2003-02-28  1:21 Dan Kegel
  2003-02-28 13:40 ` Alan Cox
  0 siblings, 1 reply; 9+ messages in thread
From: Dan Kegel @ 2003-02-28  1:21 UTC (permalink / raw)
  To: linux-kernel

For a while now, I've been trying to figure out how
to make the oom killer not kill important processes.

How about rewarding processes that have an
RSS limit if they stay well below it?
The operator can then mark processes that are important
by using 'ulimit -m'.
(This is orthogonal to Rik's recent patch.)

--- oom_kill.c.orig	2002-09-26 17:31:12.000000000 -0700
+++ oom_kill.c	2003-02-27 16:59:46.000000000 -0800
@@ -86,6 +90,18 @@
  		points *= 2;

  	/*
+	 * Processes which *have* an RSS limit, but which are under half of it,
+	 * are behaving well, so halve their badness points.
+	 * Do it again if they're under a quarter of their RSS limit.
+	 */
+	if (p->rlim[RLIMIT_RSS].rlim_max != ULONG_MAX) {
+		if (p->mm->rss < (p->rlim[RLIMIT_RSS].rlim_max >> (PAGE_SHIFT+1)))
+			points /= 2;
+		if (p->mm->rss < (p->rlim[RLIMIT_RSS].rlim_max >> (PAGE_SHIFT+2)))
+			points /= 2;
+	}
+
+	/*
  	 * Superuser processes are usually more important, so we make it
  	 * less likely that we kill those.
  	 */

-- 
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-03-03 16:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-02-28  1:21 Protecting processes from the OOM killer Dan Kegel
2003-02-28 13:40 ` Alan Cox
2003-02-28 14:19   ` Ville Herva
2003-02-28 15:37     ` Alan Cox
2003-02-28 16:08   ` Dan Kegel
2003-02-28 22:13     ` James Antill
2003-03-03 14:45     ` Jesse Pollard
2003-03-03 16:23       ` Alan Cox
2003-03-03 16:41       ` Dan Kegel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox