Commit 87fefa38 authored by Dmitry Adamushko's avatar Dmitry Adamushko Committed by Ingo Molnar

sched: optimize task_new_fair()

due to the fact that we no longer keep the 'current' within the tree, 
dequeue/enqueue_entity() is useless for the 'current' in 
task_new_fair(). We are about to reschedule and 
sched_class->put_prev_task() will put the 'current' back into the tree, 
based on its new key.

   text    data     bss     dec     hex filename
  24388    2734      20   27142    6a06 sched.o.before
  24341    2734      20   27095    69d7 sched.o.after
Signed-off-by: default avatarDmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 75d4ef16
......@@ -972,10 +972,11 @@ static void task_new_fair(struct rq *rq, struct task_struct *p)
if (sysctl_sched_child_runs_first &&
curr->vruntime < se->vruntime) {
dequeue_entity(cfs_rq, curr, 0);
/*
* Upon rescheduling, sched_class::put_prev_task() will place
* 'current' within the tree based on its new key value.
*/
swap(curr->vruntime, se->vruntime);
enqueue_entity(cfs_rq, curr, 0);
}
update_stats_enqueue(cfs_rq, se);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment