Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom mode

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: David Rientjes
Date: Wednesday, February 17, 2010 - 3:04 pm

On Wed, 17 Feb 2010, Nick Piggin wrote:


For is_vm_hugetlb_page() in the pagefault oom handler, I think it should 
default to killing current as we did previously until that's worked out 
(and as some architectures like ia64 and powerpc still do).  In fact, 
pagefault ooms should probably always default to killing current if its 
killable.


That's easy to test in the oom handler, we can default to killing current 
but then kill another task if it is unkillable:

diff --git a/mm/oom_kill.c b/mm/oom_kill.c
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -696,15 +696,23 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask,
 }
 
 /*
- * The pagefault handler calls here because it is out of memory, so kill a
- * memory-hogging task.  If a populated zone has ZONE_OOM_LOCKED set, a parallel
- * oom killing is already in progress so do nothing.  If a task is found with
- * TIF_MEMDIE set, it has been killed so do nothing and allow it to exit.
+ * The pagefault handler calls here because it is out of memory, so kill current
+ * by default.  If it's unkillable, then fallback to killing a memory-hogging
+ * task.  If a populated zone has ZONE_OOM_LOCKED set, a parallel oom killing is
+ * already in progress so do nothing.  If a task is found with TIF_MEMDIE set,
+ * it has been killed so do nothing and allow it to exit.
  */
 void pagefault_out_of_memory(void)
 {
+	unsigned long totalpages;
+	int err;
+
 	if (!try_set_system_oom())
 		return;
-	out_of_memory(NULL, 0, 0, NULL);
+	constrained_alloc(NULL, 0, NULL, &totalpages);
+	err = oom_kill_process(current, 0, 0, 0, totalpages, NULL,
+				"Out of memory (pagefault)"))
+	if (err)
+		out_of_memory(NULL, 0, 0, NULL);
 	clear_system_oom();
 }

We'll need to convert the architectures that still only issue a SIGKILL to 
current to use pagefault_out_of_memory() before OOM_DISABLE is fully 
respected across the kernel, though.
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch -mm 0/9 v2] oom killer rewrite, David Rientjes, (Mon Feb 15, 3:19 pm)
[patch -mm 5/9 v2] oom: badness heuristic rewrite, David Rientjes, (Mon Feb 15, 3:20 pm)
[patch -mm 6/9 v2] oom: deprecate oom_adj tunable, David Rientjes, (Mon Feb 15, 3:20 pm)
[patch -mm 7/9 v2] oom: replace sysctls with quick mode, David Rientjes, (Mon Feb 15, 3:20 pm)
Re: [patch -mm 6/9 v2] oom: deprecate oom_adj tunable, David Rientjes, (Mon Feb 15, 3:35 pm)
Re: [patch -mm 8/9 v2] oom: avoid oom killer for lowmem al ..., KAMEZAWA Hiroyuki, (Mon Feb 15, 4:57 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Mon Feb 15, 5:00 pm)
Re: [patch -mm 8/9 v2] oom: avoid oom killer for lowmem al ..., KAMEZAWA Hiroyuki, (Mon Feb 15, 5:21 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Mon Feb 15, 5:23 pm)
[patch] mm: add comment about deprecation of __GFP_NOFAIL, David Rientjes, (Mon Feb 15, 6:13 pm)
Re: [patch] mm: add comment about deprecation of __GFP_NOFAIL, KAMEZAWA Hiroyuki, (Mon Feb 15, 6:26 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 1:10 am)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 4:42 pm)
Re: [patch -mm 8/9 v2] oom: avoid oom killer for lowmem al ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 4:48 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 5:01 pm)
Re: [patch -mm 8/9 v2] oom: avoid oom killer for lowmem al ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 5:03 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 5:41 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 6:03 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 7:13 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 7:23 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 7:34 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Tue Feb 16, 8:21 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., David Rientjes, (Wed Feb 17, 3:04 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., Daisuke Nishimura, (Sun Feb 21, 10:31 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Sun Feb 21, 11:15 pm)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., Daisuke Nishimura, (Mon Feb 22, 4:42 am)
Re: [patch -mm 4/9 v2] oom: remove compulsory panic_on_oom ..., KAMEZAWA Hiroyuki, (Mon Feb 22, 4:51 pm)