mirror of
https://github.com/JakeHillion/scx.git
synced 2024-12-02 22:07:12 +00:00
9a29547e5b
In lowlatency mode (option --lowlatency) tasks are ordered using a deadline that is evaluated as the vruntime minus a certain "bonus", determined in function of the max time slice and the average amount of voluntary context switches, to amplify the priority boost of the tasks that are voluntarily releasing the CPU (which are typically interactive). However, this method can be extremely unfair in some cases: tasks with short bursts of voluntary context switches may receive a huge priority boost, making the rest of the system almost unresponsive (see massive hackbench stress tests for example). To prevent this rework the task's deadline logic to use the vruntime and a "deadline component" that is a function of the average used time slice, scaled using a dynamic task priority (evaluated as the static task priority and the its average amount of voluntary context switches). This logic seems to prevent excessive prioritization of tasks performing short intensive bursts of voluntary context switches. It also makes lowlatency mode in scx_bpfland (somehow) more similar to the deadline logic used by scx_rusty. Signed-off-by: Andrea Righi <andrea.righi@linux.dev> |
||
---|---|---|
.. | ||
scx_bpfland | ||
scx_lavd | ||
scx_layered | ||
scx_mitosis | ||
scx_rlfifo | ||
scx_rustland | ||
scx_rusty | ||
.gitignore | ||
README.md |
RUST SCHEDULERS
Introduction
This directory contains schedulers with user space rust components.
The README in each scheduler directory provides some background and describes the types of workloads or scenarios they're designed to accommodate. For more details on any of these schedulers, please see the header comment in their main.rs or *.bpf.c files.