aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2010-08-09 20:19:47 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-09 23:45:02 -0400
commit51b1bd2ace1595b72956224deda349efa880b693 (patch)
tree82732bb33d26379c05494dcdba8ea390ae0621db
parenta63d83f427fbce97a6cea0db2e64b0eb8435cd10 (diff)
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: David 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--Documentation/feature-removal-schedule.txt25
-rw-r--r--Documentation/filesystems/proc.txt3
-rw-r--r--fs/proc/base.c8
-rw-r--r--include/linux/oom.h3
4 files changed, 39 insertions, 0 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 71f0fea1058f..56cee4727b1a 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -151,6 +151,31 @@ Who: Eric Biederman <ebiederm@xmission.com>
151 151
152--------------------------- 152---------------------------
153 153
154What: /proc/<pid>/oom_adj
155When: August 2012
156Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's
157 badness heuristic used to determine which task to kill when the kernel
158 is out of memory.
159
160 The badness heuristic has since been rewritten since the introduction of
161 this tunable such that its meaning is deprecated. The value was
162 implemented as a bitshift on a score generated by the badness()
163 function that did not have any precise units of measure. With the
164 rewrite, the score is given as a proportion of available memory to the
165 task allocating pages, so using a bitshift which grows the score
166 exponentially is, thus, impossible to tune with fine granularity.
167
168 A much more powerful interface, /proc/<pid>/oom_score_adj, was
169 introduced with the oom killer rewrite that allows users to increase or
170 decrease the badness() score linearly. This interface will replace
171 /proc/<pid>/oom_adj.
172
173 A warning will be emitted to the kernel log if an application uses this
174 deprecated interface. After it is printed once, future warnings will be
175 suppressed until the kernel is rebooted.
176
177---------------------------
178
154What: remove EXPORT_SYMBOL(kernel_thread) 179What: remove EXPORT_SYMBOL(kernel_thread)
155When: August 2006 180When: August 2006
156Files: arch/*/kernel/*_ksyms.c 181Files: arch/*/kernel/*_ksyms.c
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index cf1295c2bb66..a6aca8740883 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -1285,6 +1285,9 @@ scaled linearly with /proc/<pid>/oom_score_adj.
1285Writing to /proc/<pid>/oom_score_adj or /proc/<pid>/oom_adj will change the 1285Writing to /proc/<pid>/oom_score_adj or /proc/<pid>/oom_adj will change the
1286other with its scaled value. 1286other with its scaled value.
1287 1287
1288NOTICE: /proc/<pid>/oom_adj is deprecated and will be removed, please see
1289Documentation/feature-removal-schedule.txt.
1290
1288Caveat: when a parent task is selected, the oom killer will sacrifice any first 1291Caveat: when a parent task is selected, the oom killer will sacrifice any first
1289generation children with seperate address spaces instead, if possible. This 1292generation children with seperate address spaces instead, if possible. This
1290avoids servers and important system daemons from being killed and loses the 1293avoids servers and important system daemons from being killed and loses the
diff --git a/fs/proc/base.c b/fs/proc/base.c
index f923b728388a..69254a365ce2 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1037,6 +1037,14 @@ static ssize_t oom_adjust_write(struct file *file, const char __user *buf,
1037 return -EACCES; 1037 return -EACCES;
1038 } 1038 }
1039 1039
1040 /*
1041 * Warn that /proc/pid/oom_adj is deprecated, see
1042 * Documentation/feature-removal-schedule.txt.
1043 */
1044 printk_once(KERN_WARNING "%s (%d): /proc/%d/oom_adj is deprecated, "
1045 "please use /proc/%d/oom_score_adj instead.\n",
1046 current->comm, task_pid_nr(current),
1047 task_pid_nr(task), task_pid_nr(task));
1040 task->signal->oom_adj = oom_adjust; 1048 task->signal->oom_adj = oom_adjust;
1041 /* 1049 /*
1042 * Scale /proc/pid/oom_score_adj appropriately ensuring that a maximum 1050 * Scale /proc/pid/oom_score_adj appropriately ensuring that a maximum
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 73b8d7b6dd19..f209b683e118 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -2,6 +2,9 @@
2#define __INCLUDE_LINUX_OOM_H 2#define __INCLUDE_LINUX_OOM_H
3 3
4/* 4/*
5 * /proc/<pid>/oom_adj is deprecated, see
6 * Documentation/feature-removal-schedule.txt.
7 *
5 * /proc/<pid>/oom_adj set to -17 protects from the oom-killer 8 * /proc/<pid>/oom_adj set to -17 protects from the oom-killer
6 */ 9 */
7#define OOM_DISABLE (-17) 10#define OOM_DISABLE (-17)