On 2020/9/12 7:04, Li, Aubrey wrote: > On 2020/9/12 0:28, Qais Yousef wrote: >> On 09/10/20 13:42, Aubrey Li wrote: >>> Added idle cpumask to track idle cpus in sched domain. When a CPU >>> enters idle, its corresponding bit in the idle cpumask will be set, >>> and when the CPU exits idle, its bit will be cleared. >>> >>> When a task wakes up to select an idle cpu, scanning idle cpumask >>> has low cost than scanning all the cpus in last level cache domain, >>> especially when the system is heavily loaded. >>> >>> Signed-off-by: Aubrey Li <aubrey...@linux.intel.com> >>> --- >>> include/linux/sched/topology.h | 13 +++++++++++++ >>> kernel/sched/fair.c | 4 +++- >>> kernel/sched/topology.c | 2 +- >>> 3 files changed, 17 insertions(+), 2 deletions(-) >>> >>> diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h >>> index fb11091129b3..43a641d26154 100644 >>> --- a/include/linux/sched/topology.h >>> +++ b/include/linux/sched/topology.h >>> @@ -65,8 +65,21 @@ struct sched_domain_shared { >>> atomic_t ref; >>> atomic_t nr_busy_cpus; >>> int has_idle_cores; >>> + /* >>> + * Span of all idle CPUs in this domain. >>> + * >>> + * NOTE: this field is variable length. (Allocated dynamically >>> + * by attaching extra space to the end of the structure, >>> + * depending on how many CPUs the kernel has booted up with) >>> + */ >>> + unsigned long idle_cpus_span[]; >> >> Can't you use cpumask_var_t and zalloc_cpumask_var() instead? > > I can use the existing free code. Do we have a problem of this? > >> >> The patch looks useful. Did it help you with any particular workload? It'd be >> good to expand on that in the commit message. >> > Odd, that included in patch v1 0/1, did you receive it?
I found it at here: https://lkml.org/lkml/2020/9/11/645 > > Thanks, > -Aubrey >