| What: /proc/<pid>/oom_adj |
| When: August 2012 |
| Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's |
| badness heuristic used to determine which task to kill when the kernel |
| is out of memory. |
| |
| The badness heuristic has since been rewritten since the introduction of |
| this tunable such that its meaning is deprecated. The value was |
| implemented as a bitshift on a score generated by the badness() |
| function that did not have any precise units of measure. With the |
| rewrite, the score is given as a proportion of available memory to the |
| task allocating pages, so using a bitshift which grows the score |
| exponentially is, thus, impossible to tune with fine granularity. |
| |
| A much more powerful interface, /proc/<pid>/oom_score_adj, was |
| introduced with the oom killer rewrite that allows users to increase or |
| decrease the badness() score linearly. This interface will replace |
| /proc/<pid>/oom_adj. |
| |
| A warning will be emitted to the kernel log if an application uses this |
| deprecated interface. After it is printed once, future warnings will be |
| suppressed until the kernel is rebooted. |