David Rientjes | 203f40a | 2010-11-11 14:05:18 -0800 | [diff] [blame] | 1 | What: /proc/<pid>/oom_adj |
| 2 | When: August 2012 |
| 3 | Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's |
| 4 | badness heuristic used to determine which task to kill when the kernel |
| 5 | is out of memory. |
| 6 | |
| 7 | The badness heuristic has since been rewritten since the introduction of |
| 8 | this tunable such that its meaning is deprecated. The value was |
| 9 | implemented as a bitshift on a score generated by the badness() |
| 10 | function that did not have any precise units of measure. With the |
| 11 | rewrite, the score is given as a proportion of available memory to the |
| 12 | task allocating pages, so using a bitshift which grows the score |
| 13 | exponentially is, thus, impossible to tune with fine granularity. |
| 14 | |
| 15 | A much more powerful interface, /proc/<pid>/oom_score_adj, was |
| 16 | introduced with the oom killer rewrite that allows users to increase or |
| 17 | decrease the badness() score linearly. This interface will replace |
| 18 | /proc/<pid>/oom_adj. |
| 19 | |
| 20 | A warning will be emitted to the kernel log if an application uses this |
| 21 | deprecated interface. After it is printed once, future warnings will be |
| 22 | suppressed until the kernel is rebooted. |