diff options
author | David Rientjes <rientjes@google.com> | 2010-08-09 20:19:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-09 23:45:02 -0400 |
commit | 51b1bd2ace1595b72956224deda349efa880b693 (patch) | |
tree | 82732bb33d26379c05494dcdba8ea390ae0621db | |
parent | a63d83f427fbce97a6cea0db2e64b0eb8435cd10 (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.txt | 25 | ||||
-rw-r--r-- | Documentation/filesystems/proc.txt | 3 | ||||
-rw-r--r-- | fs/proc/base.c | 8 | ||||
-rw-r--r-- | include/linux/oom.h | 3 |
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 | ||
154 | What: /proc/<pid>/oom_adj | ||
155 | When: August 2012 | ||
156 | Why: /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 | |||
154 | What: remove EXPORT_SYMBOL(kernel_thread) | 179 | What: remove EXPORT_SYMBOL(kernel_thread) |
155 | When: August 2006 | 180 | When: August 2006 |
156 | Files: arch/*/kernel/*_ksyms.c | 181 | Files: 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. | |||
1285 | Writing to /proc/<pid>/oom_score_adj or /proc/<pid>/oom_adj will change the | 1285 | Writing to /proc/<pid>/oom_score_adj or /proc/<pid>/oom_adj will change the |
1286 | other with its scaled value. | 1286 | other with its scaled value. |
1287 | 1287 | ||
1288 | NOTICE: /proc/<pid>/oom_adj is deprecated and will be removed, please see | ||
1289 | Documentation/feature-removal-schedule.txt. | ||
1290 | |||
1288 | Caveat: when a parent task is selected, the oom killer will sacrifice any first | 1291 | Caveat: when a parent task is selected, the oom killer will sacrifice any first |
1289 | generation children with seperate address spaces instead, if possible. This | 1292 | generation children with seperate address spaces instead, if possible. This |
1290 | avoids servers and important system daemons from being killed and loses the | 1293 | avoids 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) |