From 857904b306f93954ce8eec60fe192c587112a12c Mon Sep 17 00:00:00 2001 From: Yasunori Goto Date: Sun, 6 May 2007 14:49:59 -0700 Subject: [PATCH] --- yaml --- r: 54226 b: refs/heads/master c: 2b744c01a54fe0c9974ff1b29522f25f07084053 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/Documentation/sysctl/vm.txt | 23 +++++++++++++++++------ trunk/mm/oom_kill.c | 3 +++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 1d0290ee86ce..f69c28ca085e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 824ebef122153a03925ae0ed211b4e8568d1c8db +refs/heads/master: 2b744c01a54fe0c9974ff1b29522f25f07084053 diff --git a/trunk/Documentation/sysctl/vm.txt b/trunk/Documentation/sysctl/vm.txt index e96a341eb7e4..1d192565e182 100644 --- a/trunk/Documentation/sysctl/vm.txt +++ b/trunk/Documentation/sysctl/vm.txt @@ -197,11 +197,22 @@ and may not be fast. panic_on_oom -This enables or disables panic on out-of-memory feature. If this is set to 1, -the kernel panics when out-of-memory happens. If this is set to 0, the kernel -will kill some rogue process, called oom_killer. Usually, oom_killer can kill -rogue processes and system will survive. If you want to panic the system -rather than killing rogue processes, set this to 1. +This enables or disables panic on out-of-memory feature. -The default value is 0. +If this is set to 0, the kernel will kill some rogue process, +called oom_killer. Usually, oom_killer can kill rogue processes and +system will survive. + +If this is set to 1, the kernel panics when out-of-memory happens. +However, if a process limits using nodes by mempolicy/cpusets, +and those nodes become memory exhaustion status, one process +may be killed by oom-killer. No panic occurs in this case. +Because other nodes' memory may be free. This means system total status +may be not fatal yet. +If this is set to 2, the kernel panics compulsorily even on the +above-mentioned. + +The default value is 0. +1 and 2 are for failover of clustering. Please select either +according to your policy of failover. diff --git a/trunk/mm/oom_kill.c b/trunk/mm/oom_kill.c index a35e7a8ebd7e..038d2234f139 100644 --- a/trunk/mm/oom_kill.c +++ b/trunk/mm/oom_kill.c @@ -413,6 +413,9 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask, int order) show_mem(); } + if (sysctl_panic_on_oom == 2) + panic("out of memory. Compulsory panic_on_oom is selected.\n"); + cpuset_lock(); read_lock(&tasklist_lock);