sched: do not wakeup-preempt with SCHED_BATCH tasks
authorIngo Molnar <mingo@elte.hu>
Mon, 15 Oct 2007 15:00:18 +0000 (17:00 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 15 Oct 2007 15:00:18 +0000 (17:00 +0200)
do not wakeup-preempt with SCHED_BATCH tasks, their preemption
is batched too, driven by the tick.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched_fair.c

index ec1592eb8d08d8e422490960c6dc311fdf17fdfa..c240b72b4e62b5b5be19b4efc4e7f2786d0b6822 100644 (file)
@@ -828,6 +828,12 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p)
                resched_task(curr);
                return;
        }
+       /*
+        * Batch tasks do not preempt (their preemption is driven by
+        * the tick):
+        */
+       if (unlikely(p->policy == SCHED_BATCH))
+               return;
 
        if (sched_feat(WAKEUP_PREEMPT)) {
                while (!is_same_group(se, pse)) {