Second proposal is to give processes that are direct childs from init a
special bonus, normally that are those we don't want to get killed. They are
either important or get respawned eitherway creating an endless oom condition
loop when killing them.
A position to think about is to generally bonus processes from their distance
to init. The further down in the hirachy to more unlikely it is for the
process to be important.
Greetings, Axel
diff -ru linux-2.4.20-org/mm/oom_kill.c linux-2.4.20/mm/oom_kill.c
--- linux-2.4.20-org/mm/oom_kill.c Fri Nov 29 00:53:15 2002
+++ linux-2.4.20/mm/oom_kill.c Tue Feb 4 12:10:40 2003
@@ -62,6 +62,11 @@
if (!p->mm)
return 0;
/*
+ * Never kill init
+ */
+ if (p->pid == 1)
+ return 0:
+ /*
* The memory size of the process is the basis for the badness.
*/
points = p->mm->total_vm;
@@ -101,6 +106,15 @@
*/
if (cap_t(p->cap_effective) & CAP_TO_MASK(CAP_SYS_RAWIO))
points /= 4;
+
+ /*
+ * Give childs from init a bonus, they usually get respawned
+ * eitherway, killing them might not help to solve the out of memory
+ * condition in the long run.
+ */
+ if (p->p_pptr != NULL && p->p_pptr->pid == 1)
+ points /= 4;
+
#ifdef DEBUG
printk(KERN_DEBUG "OOMkill: task %d (%s) got %d points\n",
p->pid, p->comm, points);
-
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/