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@infradead.org
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(-)