[PATCH v3 0/7] sched: Flatten the pick

From: Peter Zijlstra

Date: Fri Jun 05 2026 - 08:48:01 EST



Hi!

New version, same story [1]. TL;DR:

- Adds new cgroup_mode knob and implements new policies to address the
hierarchy level weight mismatch.

- Builds upon that base to create a flat / single runqueue scheduler where the
cgroup hierarchy is expressed through dynamic weight management.

I'm hoping to be able to merge these patches early in the next cycle (after
7.2-rc1).

Random benchmark:

Game vs 'for ((i=0; i<8; i++)) do nice ./spin.sh; done':

Lutris / GE-Proton10-34 / Steam Runtime 3 (sniper)
Intel Core i7-2600K
AMD Radeon RX 580

Shadows Awakening (GOG)

default slice(*)

FPS min 4.0 29.0
avg 47.5 59.2
max 83.7 83.7

FT min 9.3 10.2
avg 34.0 17.0
max 121.2 30.0

FPS (Frames Per Second)
FT (FrameTime)

[*] Command prefix: 'chrt -o --sched-runtime 100000 0'


Changes since v2:

- merged debug and prep patches
- fixed update_entity_lag() on dequeue (Vincent)
- fixed throttle vs tick (Prateek)
- fixed wakeup_preempt_fair()
- rebased on tip/sched/core
- rewritten cgroup_mode changelogs
- reworked cgroup_mode concur
- added cgroup_mode tasks
- changed default cgroup_mode


[1] - https://lore.kernel.org/r/20260511113104.563854162@xxxxxxxxxxxxx

Can also be had:

git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/flat

include/linux/cpuset.h | 6
include/linux/sched.h | 1
kernel/cgroup/cpuset.c | 15
kernel/sched/core.c | 5
kernel/sched/debug.c | 89 ++++
kernel/sched/fair.c | 943 ++++++++++++++++++++++++-------------------------
kernel/sched/pelt.c | 6
kernel/sched/sched.h | 30 -
8 files changed, 607 insertions(+), 488 deletions(-)