mirror of
https://github.com/sched-ext/scx.git
synced 2024-12-01 07:00:23 +00:00
scx_rlfifo: dispatch all tasks on the first CPU available
With commit 786ec0c0
("scx_rlfifo: schedule all tasks in user-space")
all the scheduling decisions are now happening in user-space. This also
bypasses the built-in idle selection logic, delegating the CPU selection
for each task to the user-space scheduler.
The easiest way to distribute tasks across the available CPUs is to
simply allow to dispatch them on the first CPU available.
In this way the scheduler becomes usable in practical scenarios and at
the same time it also maintains its simplicity.
This allows to spread all tasks across all the available CPUs
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
This commit is contained in:
parent
786ec0c04a
commit
cb20a6f136
@ -55,7 +55,11 @@ impl<'a> Scheduler<'a> {
|
|||||||
// task.cpu < 0 is used to to notify an exiting task, in this
|
// task.cpu < 0 is used to to notify an exiting task, in this
|
||||||
// case we can simply ignore the task.
|
// case we can simply ignore the task.
|
||||||
if task.cpu >= 0 {
|
if task.cpu >= 0 {
|
||||||
let dispatched_task = DispatchedTask::new(&task);
|
let mut dispatched_task = DispatchedTask::new(&task);
|
||||||
|
|
||||||
|
// Allow to dispatch on the first CPU available.
|
||||||
|
dispatched_task.set_flag(RL_CPU_ANY);
|
||||||
|
|
||||||
let _ = self.bpf.dispatch_task(&dispatched_task);
|
let _ = self.bpf.dispatch_task(&dispatched_task);
|
||||||
|
|
||||||
// Give the task a chance to run and prevent overflowing the dispatch queue.
|
// Give the task a chance to run and prevent overflowing the dispatch queue.
|
||||||
|
Loading…
Reference in New Issue
Block a user