summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorJanet Morgan <janetmor@us.ibm.com>2005-06-22 02:14:56 +0200
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-22 03:46:17 +0200
commit578c2fd6a7f378434655e5c480e23152a3994404 (patch)
tree3a6408c416e3825cd17e33ac776425a52b743adc /mm
parent[PATCH] __read_page_state(): pass unsigned long instead of unsigned (diff)
downloadlinux-578c2fd6a7f378434655e5c480e23152a3994404.tar.xz
linux-578c2fd6a7f378434655e5c480e23152a3994404.zip
[PATCH] add OOM debug
This patch provides more debug info when the system is OOM. It displays memory stats (basically sysrq-m info) from __alloc_pages() when page allocation fails and during OOM kill. Thanks to Dave Jones for coming up with the idea. Signed-off-by: Janet Morgan <janetmor@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/oom_kill.c7
-rw-r--r--mm/page_alloc.c1
2 files changed, 5 insertions, 3 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 4bbb1cb10495..59666d905f19 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -258,6 +258,10 @@ void out_of_memory(unsigned int __nocast gfp_mask)
struct mm_struct *mm = NULL;
task_t * p;
+ printk("oom-killer: gfp_mask=0x%x\n", gfp_mask);
+ /* print memory stats */
+ show_mem();
+
read_lock(&tasklist_lock);
retry:
p = select_bad_process();
@@ -268,12 +272,9 @@ retry:
/* Found nothing?!?! Either we hang forever, or we panic. */
if (!p) {
read_unlock(&tasklist_lock);
- show_free_areas();
panic("Out of memory and no killable processes...\n");
}
- printk("oom-killer: gfp_mask=0x%x\n", gfp_mask);
- show_free_areas();
mm = oom_kill_process(p);
if (!mm)
goto retry;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 10446a646374..be05d17bd7df 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -935,6 +935,7 @@ nopage:
" order:%d, mode:0x%x\n",
p->comm, order, gfp_mask);
dump_stack();
+ show_mem();
}
return NULL;
got_pg: