Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51b1bd2a authored by David Rientjes's avatar David Rientjes Committed by Linus Torvalds
Browse files

oom: deprecate oom_adj tunable



/proc/pid/oom_adj is now deprecated so that that it may eventually be
removed.  The target date for removal is August 2012.

A warning will be printed to the kernel log if a task attempts to use this
interface.  Future warning will be suppressed until the kernel is rebooted
to prevent spamming the kernel log.

Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
Cc: Nick Piggin <npiggin@suse.de>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a63d83f4
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -151,6 +151,31 @@ Who: Eric Biederman <ebiederm@xmission.com>

---------------------------

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.

---------------------------

What:	remove EXPORT_SYMBOL(kernel_thread)
When:	August 2006
Files:	arch/*/kernel/*_ksyms.c
+3 −0
Original line number Diff line number Diff line
@@ -1285,6 +1285,9 @@ scaled linearly with /proc/<pid>/oom_score_adj.
Writing to /proc/<pid>/oom_score_adj or /proc/<pid>/oom_adj will change the
other with its scaled value.

NOTICE: /proc/<pid>/oom_adj is deprecated and will be removed, please see
Documentation/feature-removal-schedule.txt.

Caveat: when a parent task is selected, the oom killer will sacrifice any first
generation children with seperate address spaces instead, if possible.  This
avoids servers and important system daemons from being killed and loses the
+8 −0
Original line number Diff line number Diff line
@@ -1037,6 +1037,14 @@ static ssize_t oom_adjust_write(struct file *file, const char __user *buf,
		return -EACCES;
	}

	/*
	 * Warn that /proc/pid/oom_adj is deprecated, see
	 * Documentation/feature-removal-schedule.txt.
	 */
	printk_once(KERN_WARNING "%s (%d): /proc/%d/oom_adj is deprecated, "
			"please use /proc/%d/oom_score_adj instead.\n",
			current->comm, task_pid_nr(current),
			task_pid_nr(task), task_pid_nr(task));
	task->signal->oom_adj = oom_adjust;
	/*
	 * Scale /proc/pid/oom_score_adj appropriately ensuring that a maximum
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@
#define __INCLUDE_LINUX_OOM_H

/*
 * /proc/<pid>/oom_adj is deprecated, see
 * Documentation/feature-removal-schedule.txt.
 *
 * /proc/<pid>/oom_adj set to -17 protects from the oom-killer
 */
#define OOM_DISABLE (-17)