New EEVDF Linux Scheduler Patches Make It Functionally "Complete"

Written by Michael Larabel in Linux Kernel on 5 April 2024 at 12:21 PM EDT. 32 Comments
Veteran Linux kernel developer Peter Zijlstra is working to wrap-up feature work around the EEVDF kernel scheduler code.

EEVDF is short for the "Earliest Eligible Virtual Deadline First" and its design is based on a research page from the late 90's.EEVDF was merged back in Linux 6.6 to largely replace the CFS scheduler code. Now a new patch series from Zijlstra aims to "complete" the work on EEVDF functionality for this code that will likely be upstreamed for Linux 6.10.

Peter Zijlstra explained in today's sched/fair: Complete EEVDF patch series:
I'm slowly crawling back out of the hole and trying to get back to work. Availability is still low on my end, but I'll try and respond to some email.

Anyway, in order to get my feet wet again with sitting behind a computer, find here a few patches that should functionally complete the EEVDF journey.

This very much includes the new interface that exposes the extra parameter that EEVDF has. I've chosen to use sched_attr::sched_runtime for this over a nice-like value because some workloads actually know their slice length (can be dynamically measured in the same way as for deadline using CLOCK_THREAD_CPUTIME_ID) and using the real request size is much more effective than some relative measure.

[[ using too short a request size will increase job preemption overhead, using too long a request size will decrease timeliness ]]

The whole delayed-dequeue thing is I think a fundamental thing that was missing from the EEVDF paper. Without something like this EEVDF will simply not work right. IIRC this was mentioned to me many years ago when people worked on BFQ iosched and ran into this same issue. Time had erased the critical aspect of this note and I had to re-discover it again.

Also, I think Ben expressed concern that preserving lag over long periods doesn't make sense a while back.

The implementation presented here is one that should work with our cgroup mess and keeps most of the ugly inside fair.c unlike previous versions which puked all over the core scheduler code.

Critically cfs-cgroup throttling is not tested, and cgroups are only tested in so far that a systemd infected machine now boots (took a bit).

Other than that, it works well enough to build the next kernel and it passes the few trivial latency-slice tests I ran.

Anyway, please have a poke and let me know...

So if all goes well, Linux 6.10 should make the EEVDF scheduler code functionally complete.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via

Popular News This Week