Infinity Scheduler Aims To Be A Better Linux Scheduler

LINUX KERNEL The Infinity Scheduler is another attempt at improving the CPU scheduling behavior under Linux and created by the developer behind the existing "scx_flow" sched_ext scheduler. But Infinity Scheduler isn't taking the approach of using sched_ext and is rather patched into the Linux kernel in modifying CFS and RT behavior.

Open-source developer Galih Tama has been working on a replacement to scx_flow to address some "fundamental limitations" of the BPF-based sched_ext approach that can lead to false positives with these schedulers under heavy load. In a message to Phoronix, the Infinity Scheduler is described by its creator as:

"A native EEVDF modification built directly into CFS and RT — no BPF, no sched-ext dependency. The core idea is an Exponential Moving Average that tracks each task's recent runtime history. CPU-bound tasks see their time slice shrink (down to a 400µs floor) while interactive tasks retain the full share. Low-EMA wakeups get a 50% shorter vslice, moving their deadline earlier in the EEVDF tree, and a futex-waiting bypass in pick_eevdf() allows immediate preemption at the next scheduling point. RT tasks get the same EMA treatment via queue placement modulation."
In abandoning the sched_ext route, the Infinity Scheduler is currently just patches to the mainline Linux kernel for modifying the CFS and RT code. These patches as of writing are targeting the mainline Linux 6.18 LTS, Linux 7.0, and Linux 7.1 kernel versions.

Infinity Scheduler architecture


Those curious about this new Infinity Scheduler effort for Linux can see this GitHub repository for all the details and the necessary kernel patches. If there is enough reader interest I can look at running some Infinity Scheduler performance benchmarks on Phoronix.

Comments (0)

AI Article