d35d5271f5
We duplicate the definition of most fields in every layer kind. This makes reading the config harder than it needs to be, and turns every simple read of a common field into a `match` statement that is largely redundant. Utilise `#[serde(flatten)]` to embed a common struct into each of the LayerKind variants. Rather than matching on the type this can be directly accessed with `.kind.common()` and `.kind.common_mut()`. Alternatively, you can extend existing matches to match out the common parts as demonstrated in this diff where necessary. There is some further code cleanup that can be done in the changed read sites, but I wanted to make it clear that this change doesn't change behaviour, so tried to make these changes in the least obtrusive way. Drive-by: fix the formatting of the lazy_static section in main.rs by using `lazy_static::lazy_static`. Test plan: ``` # main $ cargo build --release && target/release/scx_layered --example /tmp/test_old.json # this change $ cargo build --release && target/release/scx_layered --example /tmp/test_new.json $ diff /tmp/test_{old,new}.json # no diff ``` |
||
---|---|---|
.. | ||
c | ||
include | ||
rust | ||
meson.build | ||
README.md | ||
sync-to-kernel.sh |
SCHED_EXT SCHEDULERS
Introduction
This directory contains the repo's schedulers.
Some of these schedulers are simply examples of different types of schedulers that can be built using sched_ext. They can be loaded and used to schedule on your system, but their primary purpose is to illustrate how various features of sched_ext can be used.
Other schedulers are actually performant, production-ready schedulers. That is, for the correct workload and with the correct tuning, they may be deployed in a production environment with acceptable or possibly even improved performance. Some of the examples could be improved to become production schedulers.
Please see the following README files for details on each of the various types of schedulers:
- rust describes all of the schedulers with rust user space components. All of these schedulers are production ready.
- c describes all of the schedulers with C user space components. All of these schedulers are production ready.
Note on syncing
Note that there is a sync-to-kernel.sh script in this directory. This is used to sync any changes to the specific schedulers with the Linux kernel tree. If you've made any changes to a scheduler in please use the script to synchronize with the sched_ext Linux kernel tree:
$ ./sync-to-kernel.sh /path/to/kernel/tree