Crates.io | scx_rusty |
lib.rs | scx_rusty |
version | 1.0.16 |
created_at | 2023-11-30 23:28:16.795315+00 |
updated_at | 2025-09-05 23:16:20.900058+00 |
description | A multi-domain, BPF / user space hybrid scheduler used within sched_ext, which is a Linux kernel feature which enables implementing kernel thread schedulers in BPF and dynamically loading them. https://github.com/sched-ext/scx/tree/main |
homepage | |
repository | |
max_upload_size | |
id | 1054588 |
size | 238,082 |
This is a single user-defined scheduler used within sched_ext
, which is a Linux kernel feature which enables implementing kernel thread schedulers in BPF and dynamically loading them. Read more about sched_ext
.
A multi-domain, BPF / user space hybrid scheduler. The BPF portion of the scheduler does a simple round robin in each domain, and the user space portion (written in Rust) calculates the load factor of each domain, and informs BPF of how tasks should be load balanced accordingly.
Available as a Rust crate: cargo add scx_rusty
scx_rusty
is designed to be flexible, accommodating different architectures and
workloads. Various load balancing thresholds (e.g. greediness, frequency, etc),
as well as how scx_rusty
should partition the system into scheduling domains, can
be tuned to achieve the optimal configuration for any given system or workload.
Yes. If tuned correctly, scx_rusty
should be performant across various CPU
architectures and workloads. By default, scx_rusty
creates a separate scheduling
domain per-LLC, so its default configuration may be performant as well. Note
however that scx_rusty
does not yet disambiguate between LLCs in different NUMA
nodes, so it may perform better on multi-CCX machines where all the LLCs share
the same socket, as opposed to multi-socket machines.
Note as well that you may run into an issue with infeasible weights, where a
task with a very high weight may cause the scheduler to incorrectly leave cores
idle because it thinks they're necessary to accommodate the compute for a
single task. This can also happen in CFS, and should soon be addressed for
scx_rusty
.