From: Christian Leber Ky box (2.6.9-final) was yesterday completly stalled (mouse movable and stupid loadmeter was still working) after starting mutt and was swapping for half an hour until I sent SIGTERM to all processes. I suspect it was a 2 GB big galeon process that was the problem. I think sysrq needs a key to call oom_kill manually. Signed-off-by: Andrew Morton --- 25-akpm/Documentation/sysrq.txt | 2 ++ 25-akpm/drivers/char/sysrq.c | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff -puN Documentation/sysrq.txt~make-sysrq-f-call-oom_kill Documentation/sysrq.txt --- 25/Documentation/sysrq.txt~make-sysrq-f-call-oom_kill 2005-01-22 23:30:57.142821512 -0800 +++ 25-akpm/Documentation/sysrq.txt 2005-01-22 23:30:57.147820752 -0800 @@ -73,6 +73,8 @@ On all - write a character to /proc/sys it so that only emergency messages like PANICs or OOPSes would make it to your console.) +'f' - Will call oom_kill to kill a memory hog process + 'e' - Send a SIGTERM to all processes, except for init. 'i' - Send a SIGKILL to all processes, except for init. diff -puN drivers/char/sysrq.c~make-sysrq-f-call-oom_kill drivers/char/sysrq.c --- 25/drivers/char/sysrq.c~make-sysrq-f-call-oom_kill 2005-01-22 23:30:57.143821360 -0800 +++ 25-akpm/drivers/char/sysrq.c 2005-01-22 23:30:57.147820752 -0800 @@ -31,7 +31,7 @@ #include #include #include /* for fsync_bdev() */ - +#include #include #include @@ -203,6 +203,18 @@ static struct sysrq_key_op sysrq_term_op .action_msg = "Terminate All Tasks", }; +static void sysrq_handle_moom(int key, struct pt_regs *pt_regs, + struct tty_struct *tty) +{ + out_of_memory(GFP_KERNEL); +// console_loglevel = 8; +} +static struct sysrq_key_op sysrq_moom_op = { + .handler = sysrq_handle_moom, + .help_msg = "Full", + .action_msg = "Manual OOM execution", +}; + static void sysrq_handle_kill(int key, struct pt_regs *pt_regs, struct tty_struct *tty) { @@ -249,7 +261,7 @@ static struct sysrq_key_op *sysrq_key_ta /* c */ NULL, /* d */ NULL, /* e */ &sysrq_term_op, -/* f */ NULL, +/* f */ &sysrq_moom_op, /* g */ NULL, /* h */ NULL, /* i */ &sysrq_kill_op, _