Messages in this thread Patch in this message | | | Date | Wed, 14 Jan 2009 19:12:25 +0300 | From | Evgeniy Polyakov <> | Subject | OOM documentation update [was: Linux killed Kenny, bastard!] |
| |
Please apply. While existing interface do not fix the problems, they should be at least documented.
Sign.
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index d105eb4..f7530a1 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt @@ -2311,6 +2311,30 @@ increase the likelihood of this process being killed by the oom-killer. Valid values are in the range -16 to +15, plus the special value -17, which disables oom-killing altogether for this process. +Process to be killed at out-of-memory situation is selected among all others +based on its badness score. This value equals to the memory size of the process +originally and then changed according to its cpu time (utime + stime) and the +run time (uptime - start time). The longer it runs the smaller is the score. +Badness score is devided by the sqare root of the cpu time and then by +the double square root of the run time. + +/proc/<pid>/oom_score shows process' current badness score. + +Following heueristics are then applied: + * if task was reniced, its score doubles + * superuser or direct hardware access tasks (CAP_SYS_ADMIN, CAP_SYS_RESOURCE + or CAP_SYS_RAWIO) have their score divided by 4 + * if oom condition happened in one cpuset and checked task does not belong + to it, its score is divided by 8 + * resulted score is multiplied by the two in the power of oom_adj when it is + positive, and devided otherwise, i.e. + points <<= oom_adj when it is positive and + points >>= oom_adj otherwise + +Swapped tasks are killed first. +Task with the biggest number of badness points is selected to be killed. +Usually children tasks are prefered compared to their parent. + 2.13 /proc/<pid>/oom_score - Display current oom-killer score -------------------------------------------------------------
-- Evgeniy Polyakov
| |