Skip to content

TanvirOnGH/awesome-linux-schedulers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Awesome Linux Schedulers Awesome Linux CPU Schedulers

An Awesome & Curated List of Schedulers for Linux.

Contents

Official Linux Kernel CPU Schedulers

  1. CFS: Completely Fair Scheduler - The default process scheduler used in the Linux kernel since version 2.6.23. It is designed to provide fairness and good overall system performance, especially in multi-core systems, with it's "fairness" mechanism.
  2. EEVDF: Earliest Eligible Virtual Dealine First - Designed to run the processes with the earliest virtual deadline first, for providing low-latency.

Community-Developed CPU Schedulers

  1. BORE: Burst-Oriented Response Enhancer - Enhanced version of CFS and EEVDF, designed to provide high performance while delivering resilient responsiveness to user input under as versatile load scenario as possible.
  2. Baby - Designed to be very basic and lightweight without compromising performance by disabling a lot of features. Great base ground CPU scheduler on Linux for educational purpose.
  3. TT: Task Type - Designed to detect tasks types based on their behaviors and control the scheduling based on their types, resulting in to have more control over the task to run next on the CPU.
  4. MuQSS: Multiple Queue Skiplist Scheduler - Designed to improve system responsiveness and reduce latency, especially in desktop and interactive workloads.
  5. BFS: Brain Fuck Scheduler - Designed to be simple and minimalistic, it is an experimental process scheduler designed for low-latency and improved desktop interactivity.
  6. CacULE - CFS patchset that is based on interactivity score mechanism which is inspired by the ULE scheduler (FreeBSD scheduler), for enhancing system responsiveness/latency. Performs better with it's own experimental load balancer called RDB (Response Driven Balancer).
  7. Cachy - Earlier generation/version of CacULE.
  8. PDS-MQ: Priority and Deadline based Skiplist multiple queue - Designed with VRQ (Variable Run Queue) support, derived from BFS: Brain Fuck Scheduler.
  9. BMQ: Bit Map Queue - Design based on existing PDS development experience and inspired by the scheduler found in Zircon by Google.
  10. ECHO: Enhanced CPU Handling Orchestrator - A CPU processes scheduler patch for the Linux kernel. It features highly multitasking handling with a maximum 35us quota, shared quotas for tasks, a minimum slice for running tasks, estimation of tasks using Shortest Remaining Task Next (SRTF), and a load balancer similar to the TT scheduler.

Multiqueue I/O Schedulers

  1. BFQ: Budget Fair Queueing - Designed to improve storage I/O performance, especially for block devices like hard drives and solid-state drives (SSDs), with ability to provide low-latency and fairness for I/O operations.
  2. Kyber - Introduced in version 4.12. It is designed to improve storage I/O performance, especially for modern non-rotational storage devices like solid-state drives (SSDs) and eMMC storage, with low overhead.
  3. mq-deadline - Adaptation of the legacy deadline scheduler, for the blk-mq scheduling framework, it is designed to group queued I/O requests into batches.

Non-Multiqueue I/O Schedulers

  1. deadline - Introduced in version 2.4.10 and is designed to optimize I/O performance for both rotational (e.g., traditional hard disk drives) and non-rotational (e.g., solid-state drives) storage devices, focusing on meeting I/O request deadlines.
  2. noop: No-operation - Designed to be a simple and minimalistic scheduler that works effectively with certain types of storage devices, particularly with modern non-rotational storage media like solid-state drives (SSDs). It's very minimalistic and lacks scheduling overhead.
  3. CFQ: Completely Fair Queueing - Designed to provide fairness and good overall system performance, especially for rotational storage devices like traditional hard disk drives (HDDs), focusing on fairness among processes accessing storage devices.

Resources

  • Project C - A project to provide BMQ and PDS-mq cpu scheduler in one single patch set.
  • CK Kolivas' Patches Web Directory - CK's web directory providing MuQSS, BFS and other patchsets.
  • Linux Baby - Linux kernel with baby patchset applied.
  • Linux CachyOS - Linux kernel with various patchsets applied including bore, eevdf, TT, BMQ, PDS, CacULE+RDB and CFS.
  • Xanmod Kernel - Custom linux kernel built to provide a stable, smooth and solid system experience.
  • linux-pf - Maintained by a kernel engineer (post-factum), contains patchsets not merged into the official kernel mainline.
  • Zen Kernel - Result of a collaborative effort of kernel hackers to provide the best Linux kernel possible for everyday systems.
  • Liquorix Kernel - An enthusiast Linux kernel designed for uncompromised responsiveness in interactive systems, enabling low latency compute in A/V production, and reduced frame time deviations in games.
  • Kernel patches by Sir lucjan - Curated custom Linux kernel patches.
  • clearlinux-pkgs/linux - Linux kernel patches by clear linux optimized for Intel systems.
  • linux-nitrous - Linux kernel with patchsets optimized for Intel Skylake and newer systems.
  • hamadmarri/benchmarks - Curated list of Linux CPU Scheduler Benchmarks and Feedback.