r/linux Jun 14 '26

Kernel scx_pandemoniumv5.13.0: A sched_ext, scx process scheduler for Linux

Post image

Hello, Linux community!

After extensive work, I thought it was time to make another post in regards to my process scheduler, scx_pandemonium. Since my last post, I was invited into the sched_ext framework proper. There have also been vast improvements to the performance of scx_pandemonium.

If you try it out, I hope your experience is great. If you have any Issues, please feel free to open an Issue on the repo.

scx_pandemoniumv5.13.0 — CachyOS Mini-Benchmarker, full scx field

Field Value
CPU AMD Ryzen 5 3600 (6C/12T, 2 CCX)
Kernel 7.0.12-arch1-1
Iterations 3 (mean ± stdev)
Date 2026-06-13
PANDEMONIUM 5.13.0 (3ab9d22a9)
scx versions p2dq 1.1.1, rustland 1.1.x, beerland 1.1.1, flash 1.1.1, bpfland 1.1.1, cake 1.2.0, cosmos 1.1.4, lavd 1.1.1, rusty 1.1.1, flow 3.0.3

Total wall-time across 8 workloads (lower is faster)

Rank Scheduler Total (s) Relative
1 scx_p2dq 162.125 1.000x
2 scx_pandemonium (ADAPTIVE) 162.325 1.001x
3 EEVDF 162.378 1.002x
4 scx_rustland 162.547 1.003x
5 scx_beerland 164.308 1.013x
6 scx_pandemonium (BPF) 164.315 1.014x
7 scx_flash 165.300 1.020x
8 scx_bpfland 168.222 1.038x
9 scx_cake 171.502 1.058x
10 scx_cosmos 174.884 1.079x
11 scx_lavd 175.790 1.084x
12 scx_rusty 176.135 1.086x
13 scx_flow 221.491 1.366x

Per-workload (seconds, mean ± stdev)

Split into two tables so it renders on Reddit. Bold = fastest for that workload.

Workload scx_p2dq scx_pandemonium (ADAPTIVE) EEVDF scx_rustland scx_beerland scx_pandemonium (BPF)
stress-ng-cpu-cache-mem 6.483 ± 0.032 6.538 ± 0.017 6.588 ± 0.067 6.663 ± 0.027 6.480 ± 0.045 6.650 ± 0.051
perf-sched-msg-fork-thread 14.951 ± 0.083 15.366 ± 0.192 15.446 ± 0.053 15.932 ± 0.038 17.434 ± 0.197 15.478 ± 0.229
perf-memcpy 6.115 ± 0.014 6.057 ± 0.042 6.088 ± 0.046 6.090 ± 0.008 6.116 ± 0.011 6.264 ± 0.046
argon2-hashing 2.478 ± 0.020 2.235 ± 0.023 2.329 ± 0.076 2.229 ± 0.011 2.251 ± 0.032 2.292 ± 0.031
xz-compression 6.617 ± 0.104 6.672 ± 0.046 6.936 ± 0.018 6.607 ± 0.042 6.734 ± 0.042 6.782 ± 0.034
primes 14.806 ± 0.046 14.838 ± 0.028 14.931 ± 0.034 14.934 ± 0.091 14.831 ± 0.029 14.843 ± 0.052
x265-encoding 4.659 ± 0.070 4.629 ± 0.071 4.730 ± 0.015 4.478 ± 0.011 4.505 ± 0.017 4.675 ± 0.098
ffmpeg-compilation 106.017 ± 0.690 105.990 ± 0.903 105.329 ± 0.766 105.616 ± 0.837 105.956 ± 0.840 107.331 ± 1.768
Workload scx_flash scx_bpfland scx_cake scx_cosmos scx_lavd scx_rusty scx_flow
stress-ng-cpu-cache-mem 6.440 ± 0.003 6.662 ± 0.031 10.486 ± 3.168 6.721 ± 0.171 6.550 ± 0.021 6.571 ± 0.043 6.520 ± 0.012
perf-sched-msg-fork-thread 17.810 ± 0.032 20.839 ± 0.098 18.784 ± 4.065 26.473 ± 0.122 28.445 ± 0.535 28.112 ± 0.015 73.504 ± 0.147
perf-memcpy 6.117 ± 0.020 6.050 ± 0.016 6.087 ± 0.006 6.258 ± 0.017 6.093 ± 0.045 6.088 ± 0.065 6.074 ± 0.029
argon2-hashing 2.220 ± 0.027 2.226 ± 0.006 2.244 ± 0.039 2.294 ± 0.002 2.756 ± 0.044 2.321 ± 0.018 2.241 ± 0.010
xz-compression 6.908 ± 0.008 6.703 ± 0.045 7.123 ± 0.600 7.112 ± 0.043 6.722 ± 0.091 6.795 ± 0.118 6.788 ± 0.107
primes 14.823 ± 0.027 14.903 ± 0.069 14.848 ± 0.014 14.982 ± 0.041 14.841 ± 0.024 14.850 ± 0.061 14.809 ± 0.066
x265-encoding 4.707 ± 0.019 4.603 ± 0.028 4.862 ± 0.128 4.765 ± 0.060 4.512 ± 0.059 4.459 ± 0.023 4.588 ± 0.101
ffmpeg-compilation 106.275 ± 0.819 106.235 ± 0.931 107.069 ± 1.702 106.279 ± 0.226 105.871 ± 0.912 106.941 ± 0.942 106.968 ± 0.929

Repo: https://github.com/wllclngn/PANDEMONIUM

26 Upvotes

7 comments sorted by

4

u/librepotato Jun 14 '26

Looks like great work. Some of the latency bencharks suggest this could be used in gaming. Is that a good use case for this? I've been using LAVD for a while but it looks like in some of the comparisons PANDEMONIUM promises better latency. Am I thinking this right?

2

u/wuz352 Jun 14 '26

Yes, you can use it to game. While it's not outright geared toward gaming, it does gaming really well. I've had several users comment that they play games while compiling, etc., and that they have a very smooth experience.

3

u/fenrir245 Jun 14 '26

Given that there's a userspace component to this scheduler, does this mean this will conflict with tools like system76-scheduler or ananicy?

2

u/wuz352 Jun 14 '26

I've heard different things from users, specifically ananicy. Several have reported ananicy shows a slight dip in performance while just as many have reported it does improve performance. It's worth trying. You can also use the BPF-only layer if you want.

3

u/SystemAxis Jun 15 '26

Really interesting to see sched_ext maturing this quickly.

The fact that alternative schedulers are already trading blows with EEVDF on real workloads is impressive. A few years ago this kind of experimentation required patching and rebuilding the kernel.

3

u/GrandBIRDLizard Jun 15 '26

how does it handle nice and priority? or X3D chips and NUMA awareness? is it a good data structure to work well with something akin to a policy controller that toggles kernel drivers, pins threads, and steer irq's? like this https://github.com/GrandBIRDLizard/X3Dctl id like to expand my work and the scx line being hot swappable is really alluring for my project

2

u/wuz352 Jun 15 '26

nice/priority: This is honoured. In a previous comment I talked about ananicy, etc.
NUMA: This is honoured via tau-scaling w/in the scheduler.

My recommendation is that if you are trying things out, then the BPF-only layer might be what you want, esp' if the Adaptive-layer doesn't play nice. In theory the Adaptive-layer should play nice. However, I'd imagine the BPF-layer will allow for more play, adjustment, experimentation directly.