scx-upstream/scheds/rust
Tejun Heo a576242b69 scx_layered: Open and grouped layers can handle tasks with custom affinities
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)
2024-05-23 12:54:17 -10:00
..
scx_lavd Merge pull request #294 from sched-ext/fix_warnings 2024-05-18 10:47:54 -05:00
scx_layered scx_layered: Open and grouped layers can handle tasks with custom affinities 2024-05-23 12:54:17 -10:00
scx_rlfifo scx_rustland_core: switch to FIFO when system is underutilized 2024-05-22 09:02:02 +02:00
scx_rustland scx_rustland: dispatch interactive tasks on any CPU 2024-05-22 12:12:55 +02:00
scx_rusty rusty: Fix bugs in rusty 2024-05-18 07:51:20 -05:00
meson.build scheds-rust: add explanation for chaining schedulers 2024-04-23 08:30:38 +08:00
README.md scx_lavd: add scx_lavd (Latency-criticality Aware Virtual Deadline) scheduler 2024-03-16 10:31:07 +09:00

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.

Schedulers