scx/scheds/rust/scx_rlfifo
Andrea Righi e6b624a97c scx_rustland_core: improve idle CPU selection API and logic
Pass enqueue flags to user-space: flags will be passed via
QueuedTask.flags and can be forwarded back to BPF via
DispatchedTask.flags.

These flags can be also passed to BpfScheduler.select_cpu() to apply a
more refined CPU selection policy.

Moreover, avoid to prioritize the user-space scheduler too much and
dispatch it only if there are no other tasks that needs to be dispatched
in ops.dispatch().

This improves CPU utilization and enhances the fairness, robustness, and
resilience of schedulers based on scx_rustland_core, particularly under
stress test conditions.

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-16 22:12:38 +02:00
..
src scx_rustland_core: improve idle CPU selection API and logic 2024-09-16 22:12:38 +02:00
.gitignore build: Use workspace to group rust sub-projects 2024-08-25 00:47:58 -10:00
build.rs scx_rustland_core: introduce RustLandBuilder() 2024-02-28 17:49:44 +01:00
Cargo.toml scx_rustland_core: expose enq_flags to user-space 2024-09-06 11:25:24 +02:00
LICENSE scx_rlfifo: simple user-space FIFO scheduler written in Rust 2024-02-28 17:49:44 +01:00
README.md scx_rlfifo: simple user-space FIFO scheduler written in Rust 2024-02-28 17:49:44 +01:00
rustfmt.toml scx_rlfifo: simple user-space FIFO scheduler written in Rust 2024-02-28 17:49:44 +01:00

scx_rlfifo

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.

Overview

scx_rlfifo is a simple FIFO scheduler runs in user-space, based on the scx_rustland_core framework.

Typical Use Case

This scheduler is provided as a simple template that can be used as a baseline to test more complex scheduling policies.

Production Ready?

Definitely not. Using this scheduler in a production environment is not recommended, unless there are specific requirements that necessitate a basic FIFO scheduling approach. Even then, it's still recommended to use the kernel's SCHED_FIFO real-time class.