aboutsummaryrefslogtreecommitdiffstats
path: root/mm/oom_kill.c
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2008-02-07 03:14:06 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 11:42:19 -0500
commit4c4a22148909e4c003562ea7ffe0a06e26919e3c (patch)
treefa8b7d00e89f0eb4cdb4394dbc74d898810519aa /mm/oom_kill.c
parent4c6bc8dd5a0932f2c0b30a5f0a124464b7f614d0 (diff)
memcontrol: move oom task exclusion to tasklist scan
Creates a helper function to return non-zero if a task is a member of a memory controller: int task_in_mem_cgroup(const struct task_struct *task, const struct mem_cgroup *mem); When the OOM killer is constrained by the memory controller, the exclusion of tasks that are not a member of that controller was previously misplaced and appeared in the badness scoring function. It should be excluded during the tasklist scan in select_bad_process() instead. [akpm@linux-foundation.org: build fix] Cc: Christoph Lameter <clameter@sgi.com> Cc: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/oom_kill.c')
-rw-r--r--mm/oom_kill.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 64751dc9d997..ef5084dbc793 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -65,13 +65,6 @@ unsigned long badness(struct task_struct *p, unsigned long uptime,
65 return 0; 65 return 0;
66 } 66 }
67 67
68#ifdef CONFIG_CGROUP_MEM_CONT
69 if (mem != NULL && mm->mem_cgroup != mem) {
70 task_unlock(p);
71 return 0;
72 }
73#endif
74
75 /* 68 /*
76 * The memory size of the process is the basis for the badness. 69 * The memory size of the process is the basis for the badness.
77 */ 70 */
@@ -223,6 +216,8 @@ static struct task_struct *select_bad_process(unsigned long *ppoints,
223 /* skip the init task */ 216 /* skip the init task */
224 if (is_global_init(p)) 217 if (is_global_init(p))
225 continue; 218 continue;
219 if (mem && !task_in_mem_cgroup(p, mem))
220 continue;
226 221
227 /* 222 /*
228 * This task already has access to memory reserves and is 223 * This task already has access to memory reserves and is