Explorar o código

sched: do not wakeup-preempt with SCHED_BATCH tasks

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>
Ingo Molnar %!s(int64=17) %!d(string=hai) anos
pai
achega
91c234b4e3
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      kernel/sched_fair.c

+ 6 - 0
kernel/sched_fair.c

@@ -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)) {