path: root/mm
diff options
authorKAMEZAWA Hiroyuki <>2010-03-10 15:22:32 -0800
committerLinus Torvalds <>2010-03-12 15:52:37 -0800
commitdaaf1e68874c078a15ae6ae827751839c4d81739 (patch)
tree22ed2e28b1c4f0b714df680ffff6407e519c5c60 /mm
parent1080d7a30304d03b1d9fd530aacd8aece2d702a2 (diff)
memcg: handle panic_on_oom=always case
Presently, if panic_on_oom=2, the whole system panics even if the oom happend in some special situation (as cpuset, mempolicy....). Then, panic_on_oom=2 means painc_on_oom_always. Now, memcg doesn't check panic_on_oom flag. This patch adds a check. BTW, how it's useful ? kdump+panic_on_oom=2 is the last tool to investigate what happens in oom-ed system. When a task is killed, the sysytem recovers and there will be few hint to know what happnes. In mission critical system, oom should never happen. Then, panic_on_oom=2+kdump is useful to avoid next OOM by knowing precise information via snapshot. TODO: - For memcg, it's for isolate system's memory usage, oom-notiifer and freeze_at_oom (or rest_at_oom) should be implemented. Then, management daemon can do similar jobs (as kdump) or taking snapshot per cgroup. Signed-off-by: KAMEZAWA Hiroyuki <> Cc: Balbir Singh <> Cc: David Rientjes <> Cc: Nick Piggin <> Reviewed-by: Daisuke Nishimura <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'mm')
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 35755a4156d..71d10bf52dc 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -473,6 +473,8 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask)
unsigned long points = 0;
struct task_struct *p;
+ if (sysctl_panic_on_oom == 2)
+ panic("out of memory(memcg). panic_on_oom is selected.\n");
p = select_bad_process(&points, mem);