]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
sched/fair: Fix wakeup_preempt_fair() vs delayed dequeue
authorVincent Guittot <vincent.guittot@linaro.org>
Wed, 22 Apr 2026 09:34:00 +0000 (11:34 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 28 Apr 2026 07:19:54 +0000 (09:19 +0200)
commitac8e69e693631689d74d8f1ebee6f84f737f797f
tree42ba2b0f5aea3144486418b4c4c772c9c82d7a83
parentc5cd6fd75b6a55761337c9e965dd5ad02485d00d
sched/fair: Fix wakeup_preempt_fair() vs delayed dequeue

Similar to how pick_next_entity() must dequeue delayed entities, so too must
wakeup_preempt_fair(). Any delayed task being found means it is eligible and
hence past the 0-lag point, ready for removal.

Worse, by not removing delayed entities from consideration, it can skew the
preemption decision, with the end result that a short slice wakeup will not
result in a preemption.

                     tip/sched/core  tip/sched/core    +this patch
cyclictest slice  (ms) (default)2.8             8               8
hackbench slice   (ms) (default)2.8            20              20
Total Samples          |    22559           22595           22683
Average           (us) |      157              64( 59%)        59(  8%)
Median (P50)      (us) |       57              57(  0%)        58(- 2%)
90th Percentile   (us) |       64              60(  6%)        60(  0%)
99th Percentile   (us) |     2407              67( 97%)        67(  0%)
99.9th Percentile (us) |     3400            2288( 33%)       727( 68%)
Maximum           (us) |     5037            9252(-84%)      7461( 19%)

Fixes: f12e148892ed ("sched/fair: Prepare pick_next_task() for delayed dequeue")
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260422093400.319251-1-vincent.guittot@linaro.org
kernel/sched/fair.c