mirror of
https://github.com/sched-ext/scx.git
synced 2024-11-25 04:00:24 +00:00
a576242b69
The main reason why custom affinities are tricky for scx_layered is because if we put a task which doesn't allow all CPUs into a layer's DSQ, it may not get consumed for an indefinite amount of time. However, this is only true for confined layers. Both open and grouped layers always consumed from all CPUs and thus don't have this risk. Let's allow tasks with custom affinities in open and grouped layers. - In select_cpu(), don't consider direct dispatching to a local DSQ as affinity violation even if the target CPU is outside the layer's cpumask if the layer is open. - In enqueue(), separate out per-cpu kthread special case into its own block. Note that this is only applied if the layer is not preempting as a preempting layer has a higher priority than HI_FALLBACK_DSQ anyway. - Trigger the LO_FALLBACK_DSQ path for other threads only if the layer is confined. - The preemption path now also runs for tasks with a custom affinity in open and grouped layers. Update it so that it only considers the CPUs in the preempting task's allowed cpumask. (cherry picked from commit 82d2f887a4608de61ddf5e15643c10e504a88f7b) |
||
---|---|---|
.. | ||
scx_lavd | ||
scx_layered | ||
scx_rlfifo | ||
scx_rustland | ||
scx_rusty | ||
meson.build | ||
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.