scx-upstream/scheds/rust
Andrea Righi c20a19c946 scx_bpfland: always give tasks a chance to run on an idle CPU
During ttwu, the kernel may decide to skip ->select_task_rq() (e.g.,
when only one CPU is allowed or migration is disabled). This causes to
call ops.enqueue() directly without having a chance to call
ops.select_cpu().

Therefore, introduce a new flag (select_cpu_done) in the local task
context to determine if ops.select_cpu() was bypassed and, in that case,
attempt to find an idle CPU directly from ops.enqueue().

In the future this information will be supplied by the kernel through a
special enqueue flag (SCX_ENQ_CPU_SELECTED) [1]. However, the custom
flag in the local task context ensures to reliably determine the same
information, even on older kernels where this flag is not available.

[1] https://lore.kernel.org/lkml/20240928003840.GA2717@maniforge/T

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-30 14:36:19 +02:00
..
scx_bpfland scx_bpfland: always give tasks a chance to run on an idle CPU 2024-09-30 14:36:19 +02:00
scx_lavd scx_lavd: fix incorrect neighbor_bit initialization 2024-09-29 02:27:40 +09:00
scx_layered scx_layered: Fix cache initialization cpumask 2024-09-29 22:10:08 -04:00
scx_mitosis enable ide's etc. to work on bpf.c files (#668) 2024-09-24 16:55:02 -04:00
scx_rlfifo scx_rustland_core: improve idle CPU selection API and logic 2024-09-16 22:12:38 +02:00
scx_rustland scx_rustland_core: improve idle CPU selection API and logic 2024-09-16 22:12:38 +02:00
scx_rusty enable ide's etc. to work on bpf.c files (#668) 2024-09-24 16:55:02 -04:00
.gitignore build: Use workspace to group rust sub-projects 2024-08-25 00:47:58 -10:00
README.md scheds: introduce scx_bpfland 2024-06-27 17:28:42 +02: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