Re: [PATCH v2 00/10] sched: Flatten the pick
From: Peter Zijlstra
Date: Wed May 13 2026 - 07:37:04 EST
On Tue, May 12, 2026 at 10:42:33AM +0200, Vincent Guittot wrote:
> I haven't reviewed the patches yet but I ran some tests with it while
> testing sched latency related changes for short slice wakeup
> preemption. I have some large hackbench regressions with this series
> on HMP system with and without EAS. those figures are unexpected
> because the benchs run on root cfs
>
> One example with hackbench 8 groups thread pipe
> tip/sched/core tip/sched/core +this patchset +this patchset
> slice 2.8ms 16ms 2.8ms 16ms
> dragonboard rb5 with EAS
> 0,748(+/-4,6%) 0,621(+/-3.6%) +17% 1,915(+/-7.9%) -156%
> 0,689(+/- 9.1%) +8%
>
> radxa orion6 HMP without EAS
> 0,588(+/-5.8%) 0,677(+/-5.9%) -15% 1,505(+/-10%) -156%
> 1,071(+/-5.9%) -82%
>
> Increasing the slice partly removes regressions but tis is surprising
> because the bench runs at root cfs and I thought that results will not
> change in such a case
D'oh :/
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index e54da4c6c945..77d0e1937f2c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -9071,7 +9071,7 @@ static void wakeup_preempt_fair(struct rq *rq, struct task_struct *p, int wake_f
enum preempt_wakeup_action preempt_action = PREEMPT_WAKEUP_PICK;
struct task_struct *donor = rq->donor;
struct sched_entity *nse, *se = &donor->se, *pse = &p->se;
- struct cfs_rq *cfs_rq = task_cfs_rq(donor);
+ struct cfs_rq *cfs_rq = &rq->cfs;
int cse_is_idle, pse_is_idle;
/*