| 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. |