Messages in this thread Patch in this message | | | Date | Sat, 6 Dec 2003 10:31:43 +0100 | From | Kristian Peters <> | Subject | Re: oom killer in 2.4.23 |
| |
Andrea Arcangeli <andrea@suse.de> schrieb: > what you're complaining is the 'selection of the task to be killed'. > That's not solvable. the kernel can't read your brain period. Only if > the kernel could read the brain of the adminstrator then you would be > happy, there is no way the kernel can know which is the task you really > want to have killed first.
I agree. On a server the most likely application to be killed would be the service with the most pages in memory. And those services tend to be the important ones.
However, for a simple desktop-linux that statistical approach seems to be wrong. Your vm has even killed /sbin/getty sometimes, so that I can't login via a simple console.
Re-enabling the oom-killer gives a good result for me:
Dec 6 09:46:19 adlib kernel: Out of Memory: Killed process 643 (khexedit). Dec 6 09:48:42 adlib kernel: Out of Memory: Killed process 645 (khexedit).
What I complain is that your vm kills some processes without mentioning in the logs. How can I determine what processes the kernel has killed ?
I hope that fairly simple patch does things right for all people that want the old behaviour. It's already a year ago I last hacked on the kernel.
diff -rauN linux-2.4.23/include/linux/sched.h linux-2.4.23-kp1/include/linux/sched.h --- linux-2.4.23/include/linux/sched.h Fri Nov 28 19:26:21 2003 +++ linux-2.4.23-kp1/include/linux/sched.h Sat Dec 6 09:57:04 2003 @@ -429,6 +429,7 @@ #define PF_DUMPCORE 0x00000200 /* dumped core */ #define PF_SIGNALED 0x00000400 /* killed by a signal */ #define PF_MEMALLOC 0x00000800 /* Allocating memory */ +#define PF_MEMDIE 0x00001000 /* Killed for out-of-memory */ #define PF_FREE_PAGES 0x00002000 /* per process page freeing */ #define PF_NOIO 0x00004000 /* avoid generating further I/O */ diff -rauN linux-2.4.23/mm/oom_kill.c linux-2.4.23-kp1/mm/oom_kill.c --- linux-2.4.23/mm/oom_kill.c Fri Nov 28 19:26:21 2003 +++ linux-2.4.23-kp1/mm/oom_kill.c Fri Dec 5 20:31:39 2003 @@ -21,8 +21,6 @@ #include <linux/swapctl.h> #include <linux/timex.h> -#if 0 /* Nothing in this file is used */ - /* #define DEBUG */ /** @@ -257,5 +255,3 @@ first = now; count = 0; } - -#endif /* Unused file */ diff -rauN linux-2.4.23/mm/vmscan.c linux-2.4.23-kp1/mm/vmscan.c --- linux-2.4.23/mm/vmscan.c Fri Nov 28 19:26:21 2003 +++ linux-2.4.23-kp1/mm/vmscan.c Sat Dec 6 10:21:55 2003 @@ -649,13 +649,7 @@ failed_swapout = !swap_out(classzone); } while (--tries); - if (likely(current->pid != 1)) - break; - if (!check_classzone_need_balance(classzone)) - break; - - __set_current_state(TASK_RUNNING); - yield(); + out_of_memory(); } return 0;
*Kristian
_o) /\\ _\_V - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |