Skip to content

Commit

Permalink
standardize content titles
Browse files Browse the repository at this point in the history
  • Loading branch information
TanvirOnGH committed May 19, 2024
1 parent 9369b37 commit 4086c52
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@ An Awesome & Curated List of Schedulers for Linux.

## Contents

- [CPU Schedulers](#cpu-schedulers)
- [Built-in](#built-in)
- [Custom](#custom)
- [I/O Schedulers](#io-schedulers)
- [Multiqueue](#multiqueue)
- [Non-multiqueue](#non-multiqueue)
- [Official Linux Kernel CPU Schedulers](#official-linux-kernel-cpu-schedulers)
- [Community-Developed CPU Schedulers](#community-developed-cpu-schedulers)
- [Multiqueue I/O Schedulers](#multiqueue-io-schedulers)
- [Non-Multiqueue I/O Schedulers](#non-multiqueue-io-schedulers)
- [Resources](#resources)

## CPU Schedulers

### Built-in
### Official Linux Kernel CPU Schedulers

1. [CFS: Completely Fair Scheduler](https://docs.kernel.org/scheduler/sched-design-CFS.html) - 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](https://lwn.net/Articles/925371/) - Designed to run the processes with the earliest virtual deadline first, for providing low-latency.

### Custom
### Community-Developed CPU Schedulers

1. [BORE: Burst-Oriented Response Enhancer](https://github.com/firelzrd/bore-scheduler) - Enhanced version of [CFS](https://docs.kernel.org/scheduler/sched-design-CFS.html) and [EEVDF](https://lwn.net/Articles/925371/), designed to provide high performance while delivering resilient responsiveness to user input under as versatile load scenario as possible.
2. [Baby](https://github.com/hamadmarri/Baby-CPU-Scheduler) - 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.
Expand All @@ -30,21 +27,19 @@ An Awesome & Curated List of Schedulers for Linux.
8. [PDS-MQ: Priority and Deadline based Skiplist multiple queue](https://www.phoronix.com/news/PDS-MQ-Linux-4.17) - Designed with VRQ (Variable Run Queue) support, derived from [BFS: Brain Fuck Scheduler](https://en.wikipedia.org/wiki/Brain_Fuck_Scheduler).
9. [BMQ: Bit Map Queue](https://www.phoronix.com/news/Linux-BitMap-Queue-BMQ) - Design based on existing [PDS](https://www.phoronix.com/news/PDS-MQ-Linux-4.17) development experience and inspired by the scheduler found in [Zircon](https://fuchsia.dev/fuchsia-src/concepts/kernel) by Google.

## I/O Schedulers

### Multiqueue
### Multiqueue I/O Schedulers

1. [BFQ: Budget Fair Queueing](https://docs.kernel.org/block/bfq-iosched.html) - 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](https://lwn.net/Articles/720071/) - 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](https://github.com/torvalds/linux/blob/master/block/mq-deadline.c) - Adaptation of the legacy [deadline](https://en.wikipedia.org/wiki/Deadline_scheduler) scheduler, for the [blk-mq](https://docs.kernel.org/block/blk-mq.html) scheduling framework, it is designed to group queued I/O requests into batches.

### Non-multiqueue
### Non-Multiqueue I/O Schedulers

1. [deadline](https://en.wikipedia.org/wiki/Deadline_scheduler) - 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](https://en.wikipedia.org/wiki/Noop_scheduler) - 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](https://www.kernel.org/doc/Documentation/block/cfq-iosched.txt) - 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.

## Misc
## Resources

- [Project C](https://gitlab.com/alfredchen/projectc) - A project to provide BMQ and PDS-mq cpu scheduler in one single patch set.
- [CK Kolivas' Patches Web Directory](http://ck.kolivas.org/patches/) - CK's web directory providing MuQSS, BFS and other patchsets.
Expand Down

0 comments on commit 4086c52

Please sign in to comment.