From: Li Chen <me@linux.beauty>
To: "Thomas Gleixner" <tglx@linutronix.de>,
"Ingo Molnar" <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Sohil Mehta" <sohil.mehta@intel.com>,
"Brian Gerst" <brgerst@gmail.com>,
"Patryk Wlazlyn" <patryk.wlazlyn@linux.intel.com>,
linux-kernel@vger.kernel.org, Li Chen <chenl311@chinatelecom.cn>,
K Prateek Nayak <kprateek.nayak@amd.com>
Subject: [PATCH v5 4/4] x86/smpboot: avoid SMT domain attach/destroy if SMT is not enabled
Date: Thu, 10 Jul 2025 18:57:10 +0800 [thread overview]
Message-ID: <20250710105715.66594-5-me@linux.beauty> (raw)
In-Reply-To: <20250710105715.66594-1-me@linux.beauty>
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.
Suggested-by: K Prateek Nayak <kprateek.nayak@amd.com>
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 309338033356f..33e166f6ab122 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.
+ */
+ if (cpu_smt_num_threads <= 1)
+ ++topology;
+
+ set_sched_topology(topology);
}
void set_cpu_sibling_map(int cpu)
--
2.50.0
next prev parent reply other threads:[~2025-07-10 11:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 10:57 [PATCH v5 0/4] x86/smpboot: tidy sched-topology and drop useless SMT level Li Chen
2025-07-10 10:57 ` [PATCH v5 1/4] smpboot: introduce SDTL_INIT() helper to tidy sched topology setup Li Chen
2025-07-11 5:50 ` K Prateek Nayak
2025-07-11 13:06 ` Peter Zijlstra
2025-07-14 4:03 ` K Prateek Nayak
2025-07-14 8:57 ` Peter Zijlstra
2025-07-11 16:16 ` Valentin Schneider
2025-07-14 9:10 ` [tip: sched/core] sched/topology: Remove sched_domain_topology_level::flags tip-bot2 for K Prateek Nayak
2025-07-11 12:25 ` [PATCH v5 1/4] smpboot: introduce SDTL_INIT() helper to tidy sched topology setup Peter Zijlstra
2025-07-14 9:10 ` [tip: sched/core] " tip-bot2 for Li Chen
2025-07-10 10:57 ` [PATCH v5 2/4] x86/smpboot: remove redundant CONFIG_SCHED_SMT Li Chen
2025-07-14 9:10 ` [tip: sched/core] " tip-bot2 for Li Chen
2025-07-10 10:57 ` [PATCH v5 3/4] x86/smpboot: moves x86_topology to static initialize and truncate Li Chen
2025-07-11 12:35 ` Peter Zijlstra
2025-07-14 9:10 ` [tip: sched/core] " tip-bot2 for Li Chen
2025-07-10 10:57 ` Li Chen [this message]
2025-07-14 9:10 ` [tip: sched/core] x86/smpboot: avoid SMT domain attach/destroy if SMT is not enabled tip-bot2 for Li Chen
2025-07-11 5:52 ` [PATCH v5 0/4] x86/smpboot: tidy sched-topology and drop useless SMT level K Prateek Nayak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250710105715.66594-5-me@linux.beauty \
--to=me@linux.beauty \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=chenl311@chinatelecom.cn \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=kprateek.nayak@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=patryk.wlazlyn@linux.intel.com \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=sohil.mehta@intel.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.