From: Dietmar Eggemann <dietmar.eggemann@arm.com>
To: Andrea Righi <arighi@nvidia.com>, Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Will Deacon <will@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
K Prateek Nayak <kprateek.nayak@amd.com>,
Christian Loehle <christian.loehle@arm.com>,
Srikar Dronamraju <srikar@linux.ibm.com>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
Phil Auld <pauld@redhat.com>, Breno Leitao <leitao@debian.org>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
Lee Trager <ltrager@nvidia.com>, Vikram Sethi <vsethi@nvidia.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 0/2] sched: Enable preferred SMT siblings on NVIDIA Olympus
Date: Mon, 21 Sep 2026 11:04:42 +0200 [thread overview]
Message-ID: <75f23add-e27c-4749-8495-d29388b6ca56@arm.com> (raw)
In-Reply-To: <20260917140707.3807229-1-arighi@nvidia.com>
On 17.09.26 16:05, Andrea Righi wrote:
[...]
> The first patch teaches the fair scheduler's idle-selection paths to honor
> SD_ASYM_PACKING at the shared-capacity SMT level. The scheduler first selects a
> candidate CPU and core according to its existing placement and capacity rules,
> then chooses the highest-priority available sibling within that core. This also
> completes the existing POWER7 SD_ASYM_PACKING behavior by applying its
> hardware-thread ordering during idle selection.
>
> Olympus firmware does not currently provide an interface to describe the
> preferred SMT sibling. Adding such a firmware or ACPI interface will take time
> and will not help systems with existing firmware. At the same time, inferring
> this policy from MIDR would encode a platform-specific decision in the kernel
> and make it harder to replace with a proper firmware ABI.
>
> The second patch therefore adds the sched_smt_asym_packing= boot option. Using
> sched_smt_asym_packing=on explicitly opts the SMT scheduling domain into
> SD_ASYM_PACKING without requiring architecture-specific detection. Priority
> remains defined by arch_asym_cpu_priority(). The weak default orders siblings by
> -cpu, consistently selecting the lowest-numbered available logical CPU.
> Architecture overrides remain authoritative, so siblings assigned equal
> priorities remain unordered. The default auto mode preserves
> architecture-provided topology policy, including the existing powerpc behavior,
> while off provides an explicit override to disable SMT asymmetric packing.
>
> On Olympus, PE0 and PE1 have equal steady-state capacity; this preference does
> not identify a faster PE. The lower-numbered logical CPU is used only as a
> canonical choice when both siblings are available. Consistently selecting the
> same sibling avoids alternating the active PE across wakeups, lets the other
> sibling remain idle for longer, and allows more cores to remain in, or return
> to, full-resource single-thread mode.
So I think that Power7 and other SMT machines won't ever turn
'sched_smt_asym_packing' on then.
As we have seen in https://lore.kernel.org/r/aqSEB2N_NQbBVab6@gpd4 this
code will only benefit NVIDIAs Spatial SMT, i.e. dynamically
partitioning a physical core, rather than conventional SMT where two
threads opportunistically compete for most of the same machinery.
IIUC on Spatial SMT, placing the workload on PE0 is beneficial because
even if interrupts and other per-CPU housekeeping activities have to be
handled by PE0 next to the benchmark tasks, the main thing is that PE0
stays in full-resource single-thread mode (PE1 stays idle).
>
> The v6 series was tested on a two-node Vera system using 88-thread
> single-precision GEMM workloads on the 88 physical cores of NUMA node 0, with
> sched_smt_asym_packing=on and the workloads allowed to choose either sibling of
> every core. Each result covers five runs.
>
> Two BLAS implementations were tested: OpenBLAS, an open-source BLAS library that
> provides a publicly reproducible benchmark, and NVIDIA Performance Libraries
> (NVPL), NVIDIA's optimized BLAS implementation.
>
> OpenBLAS was evaluated using benchmark/sgemm.goto with an M=N=K=16384
> single-precision GEMM. NVPL was evaluated using benchblas with the same matrix
> dimensions, non-transposed inputs, alpha=1 and beta=0. The numbers below are the
> mean and standard deviation from five runs.
So I assume that you have 88 consistently running benchmark threads and
in case your new code let them run more likely on PE0 instead PE1 you
see this throughput increase.
> OpenBLAS throughput increased from 7.11876 +/- 0.06734 TFLOP/s on the baseline
> kernel to 7.34669 +/- 0.01936 TFLOP/s with this series (+3.20%). NVPL throughput
> increased from 9.64742 +/- 0.17311 TFLOP/s to 10.29695 +/- 0.01786 TFLOP/s
> (+6.73%).
I assume further that NVPL has the same benchmark task model, maybe with
a couple of sleep/wakeups in between?
[...]
prev parent reply other threads:[~2026-09-21 9:04 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 14:05 Andrea Righi
2026-09-17 14:05 ` [PATCH 1/2] sched/fair: Honor asymmetric SMT priority in idle selection Andrea Righi
2026-09-17 16:55 ` Kayra Cizmeci
2026-09-18 6:28 ` Kayra Cizmeci
2026-09-18 15:58 ` Vincent Guittot
2026-09-21 14:40 ` Breno Leitao
2026-09-17 14:05 ` [PATCH 2/2] sched/topology: Add asymmetric SMT packing override Andrea Righi
2026-09-18 14:14 ` Shrikanth Hegde
2026-09-18 16:03 ` Vincent Guittot
2026-09-18 18:27 ` Andrea Righi
2026-09-18 18:24 ` Andrea Righi
2026-09-21 9:04 ` Dietmar Eggemann [this message]
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=75f23add-e27c-4749-8495-d29388b6ca56@arm.com \
--to=dietmar.eggemann@arm.com \
--cc=arighi@nvidia.com \
--cc=bsegall@google.com \
--cc=christian.loehle@arm.com \
--cc=corbet@lwn.net \
--cc=juri.lelli@redhat.com \
--cc=kprateek.nayak@amd.com \
--cc=leitao@debian.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ltrager@nvidia.com \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=pauld@redhat.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=skhan@linuxfoundation.org \
--cc=srikar@linux.ibm.com \
--cc=sshegde@linux.ibm.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=vsethi@nvidia.com \
--cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®