forked from Minki/linux
sched: optimize task_tick_rt() a bit
Mitchell Erblich suggested a quality-of-implementation change to not requeue SCHED_RR tasks if there's only a single task on the runqueue, by checking for rq->nr_running == 1. provide a more efficient implementation of that, to check that particular RT priority-queue only. [ From: mingo@elte.hu ] Also first requeue the task then set need_resched - results in slightly better machine-instruction ordering. Also clean up the code a bit. Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
deac4ee65a
commit
98fbc79853
@ -207,10 +207,15 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p)
|
||||
return;
|
||||
|
||||
p->time_slice = static_prio_timeslice(p->static_prio);
|
||||
set_tsk_need_resched(p);
|
||||
|
||||
/* put it at the end of the queue: */
|
||||
requeue_task_rt(rq, p);
|
||||
/*
|
||||
* Requeue to the end of queue if we are not the only element
|
||||
* on the queue:
|
||||
*/
|
||||
if (p->run_list.prev != p->run_list.next) {
|
||||
requeue_task_rt(rq, p);
|
||||
set_tsk_need_resched(p);
|
||||
}
|
||||
}
|
||||
|
||||
static struct sched_class rt_sched_class __read_mostly = {
|
||||
|
Loading…
Reference in New Issue
Block a user