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: Dmitry Adamushko <dmitry.adamushko@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
75d4ef16a6
Коммит
87fefa381e
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче