[lkml]   [2010]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH 4/5] oom-kill: give the dying task a higher priority (v4)
From: Luis Claudio R. Goncalves <>

In a system under heavy load it was observed that even after the
oom-killer selects a task to die, the task may take a long time to die.

Right before sending a SIGKILL to the task selected by the oom-killer
this task has it's priority increased so that it can exit() exit soon,
freeing memory. That is accomplished by:

* We give our sacrificial lamb high priority and access to
* all the memory it needs. That way it should be able to
* exit() and clear out its resources quickly...
p->rt.time_slice = HZ;
set_tsk_thread_flag(p, TIF_MEMDIE);

It sounds plausible giving the dying task an even higher priority to be
sure it will be scheduled sooner and free the desired memory. It was
suggested on LKML using SCHED_FIFO:1, the lowest RT priority so that
task won't interfere with any running RT task.

Another good suggestion, implemented here, was to avoid boosting the
task priority in case of mem_cgroup OOM.

Signed-off-by: Luis Claudio R. Goncalves <>
Signed-off-by: KOSAKI Motohiro <> [rebase
on top my patches]
mm/oom_kill.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index b1df1d9..cbad4d4 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -427,6 +427,18 @@ static int __oom_kill_process(struct task_struct *p, struct mem_cgroup *mem,

force_sig(SIGKILL, p);

+ /*
+ * If this is a system OOM (not a memcg OOM), speed up the recovery
+ * by boosting the dying task priority to the lowest FIFO priority.
+ * That helps with the recovery and avoids interfering with RT tasks.
+ */
+ if (mem == NULL) {
+ struct sched_param param;
+ param.sched_priority = 1;
+ sched_setscheduler_nocheck(p, SCHED_FIFO, &param);
+ }
return 0;


 \ /
  Last update: 2010-06-01 07:53    [W:0.096 / U:3.144 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site