AlgoMaster Logo

Fair Scheduling: From CFS to EEVDF

Medium Priority29 min readUpdated August 14, 2026

Most Linux threads do not request a real-time priority or a CPU reservation. They use the normal fair scheduling policy and expect the kernel to share the processor reasonably.

That simple expectation hides a difficult problem. The scheduler must divide one logical CPU among many runnable threads, respect different nice values, respond quickly when an interactive thread wakes, and avoid switching so frequently that scheduling overhead consumes the benefit.

For many years, Linux addressed this with the Completely Fair Scheduler (CFS). Linux began transitioning the fair class to Earliest Eligible Virtual Deadline First (EEVDF) in version 6.6. EEVDF retains the weighted-fairness foundation of CFS but makes latency and selection decisions more explicit.

The transition is easiest to understand by starting with an impossible machine: a CPU that can run every runnable thread simultaneously.

This chapter develops weighted fair scheduling from that ideal model, explains CFS virtual runtime and nice weights, introduces EEVDF lag and virtual deadlines, and shows how to inspect fair-scheduler behavior on Linux.

Premium Content

Subscribe to unlock full access to this content and more premium articles.