mirror of
https://github.com/sched-ext/scx.git
synced 2024-11-28 13:40:28 +00:00
scx_layered: Update idle topology selection order
Update the idle topology selection order, the current logic is: core architecture (big/little) -> LLC -> NUMA -> Machine It's probably better to try to keep cache lines clean and do: LLC -> core architecture (big/little) -> NUMA -> Machine Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
This commit is contained in:
parent
4979cb8762
commit
0b497d6df0
@ -705,7 +705,19 @@ s32 pick_idle_cpu(struct task_struct *p, s32 prev_cpu,
|
||||
}
|
||||
|
||||
/*
|
||||
* If the layer uses BigLittle growth algo try a big cpu first
|
||||
* Try a CPU in the current LLC
|
||||
*/
|
||||
bpf_cpumask_copy(pref_idle_cpumask, idle_cpumask);
|
||||
bpf_cpumask_and(pref_idle_cpumask, cache_cpumask,
|
||||
cast_mask(pref_idle_cpumask));
|
||||
bpf_cpumask_and(pref_idle_cpumask, layer_cpumask,
|
||||
cast_mask(pref_idle_cpumask));
|
||||
if ((cpu = pick_idle_cpu_from(cast_mask(pref_idle_cpumask),
|
||||
prev_cpu, idle_cpumask)) >= 0)
|
||||
goto out_put;
|
||||
|
||||
/*
|
||||
* If the layer uses BigLittle growth algo try a big cpu
|
||||
*/
|
||||
if (has_little_cores
|
||||
&& big_cpumask
|
||||
@ -728,17 +740,6 @@ s32 pick_idle_cpu(struct task_struct *p, s32 prev_cpu,
|
||||
goto out_put;
|
||||
}
|
||||
|
||||
/*
|
||||
* Try a CPU in the current LLC
|
||||
*/
|
||||
bpf_cpumask_copy(pref_idle_cpumask, idle_cpumask);
|
||||
bpf_cpumask_and(pref_idle_cpumask, cache_cpumask,
|
||||
cast_mask(pref_idle_cpumask));
|
||||
bpf_cpumask_and(pref_idle_cpumask, layer_cpumask,
|
||||
cast_mask(pref_idle_cpumask));
|
||||
if ((cpu = pick_idle_cpu_from(cast_mask(pref_idle_cpumask),
|
||||
prev_cpu, idle_cpumask)) >= 0)
|
||||
goto out_put;
|
||||
|
||||
/*
|
||||
* Next try a CPU in the current node
|
||||
|
Loading…
Reference in New Issue
Block a user