Hello, Could you please review this patch? The idea behind it is quite simple: give the dying task a higher priority so that it can be scheduled sooner and die to free memory. oom-kill: give the dying task a higher priority 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 selected task the oom-killer increases the task priority so that it can exit quickly, 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. Signed-off-by: Luis Claudio R. Gonçalves <lclaudio@xxxxxxxx> diff --git a/mm/oom_kill.c b/mm/oom_kill.c index b68e802..8047309 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -382,6 +382,8 @@ static void dump_header(struct task_struct *p, gfp_t gfp_mask, int order, */ static void __oom_kill_task(struct task_struct *p, int verbose) { + struct sched_param param; + if (is_global_init(p)) { WARN_ON(1); printk(KERN_WARNING "tried to kill init!\n"); @@ -413,6 +415,8 @@ static void __oom_kill_task(struct task_struct *p, int verbose) */ p->rt.time_slice = HZ; set_tsk_thread_flag(p, TIF_MEMDIE); + param.sched_priority = MAX_RT_PRIO-1; + sched_setscheduler(p, SCHED_FIFO, ¶m); force_sig(SIGKILL, p); } Thanks, Luis -- [ Luis Claudio R. Goncalves Bass - Gospel - RT ] [ Fingerprint: 4FDD B8C4 3C59 34BD 8BE9 2696 7203 D980 A448 C8F8 ] -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>