Hello Li,
On 7/6/2025 8:36 AM, Li Chen wrote:
> From: Li Chen <chenl311@chinatelecom.cn>
>
> Currently, the SMT domain is added into sched_domain_topology by default.
>
> If cpu_attach_domain() finds that the CPU SMT domain’s cpumask_weight
> is just 1, it will destroy it.
>
> On a large machine, such as one with 512 cores, this results in
> 512 redundant domain attach/destroy operations.
>
> Avoid these unnecessary operations by simply checking
> cpu_smt_num_threads and skip SMT domain if the SMT domain is not
> enabled.
>
> Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
"Suggested-by:" should be fine :)
> Tested-by: K Prateek Nayak <kprateek.nayak@amd.com>
> Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
> ---
> arch/x86/kernel/smpboot.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index cd70e5322462a..8c1960a455bfb 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -492,6 +492,8 @@ static struct sched_domain_topology_level x86_topology[] = {
>
> static void __init build_sched_topology(void)
> {
> + struct sched_domain_topology_level *topology = x86_topology;
> +
> /*
> * When there is NUMA topology inside the package invalidate the
> * PKG domain since the NUMA domains will auto-magically create the
> @@ -502,7 +504,15 @@ static void __init build_sched_topology(void)
>
> memset(&x86_topology[pkgdom], 0, sizeof(x86_topology[pkgdom]));
> }
> - set_sched_topology(x86_topology);
> +
> + /*
> + * Drop the SMT domains if there is only one thread per-core
> + * since it'll get degenerated by the scheduler anyways.
> + */
The comment above has spaces instead of tab before it.
> + if (cpu_smt_num_threads <= 1)
> + ++topology;> +
> + set_sched_topology(topology);
> }
>
> void set_cpu_sibling_map(int cpu)
--
Thanks and Regards,
Prateek