From: Christian Loehle <christian.loehle@arm.com>
To: Frederic Weisbecker <frederic@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Sehee Jeong <sehee1.jeong@samsung.com>,
Qais Yousef <qyousef@layalina.io>,
John Stultz <jstultz@google.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Andrea Righi <arighi@nvidia.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
linux-pm <linux-pm@vger.kernel.org>
Subject: Re: [PATCH 0/6] timers/migration: Handle heterogenous CPU capacities
Date: Wed, 3 Jun 2026 23:50:58 +0100 [thread overview]
Message-ID: <3b79338f-6cfc-4722-8062-9103db2c8ad1@arm.com> (raw)
In-Reply-To: <20260423165354.95152-1-frederic@kernel.org>
On 4/23/26 17:53, Frederic Weisbecker wrote:
> Hi,
>
> This is a late follow-up after:
>
> https://lore.kernel.org/lkml/20250910074251.8148-1-sehee1.jeong@samsung.com/
>
> To summarize, heterogenous capacity CPUs migrate their timers
> indifferently between big and little CPUs. And this happens to be often
> migrated to big CPUs, increasing their idle target residency.
>
> Thomas proposed to isolate the hierarchy between big and little CPUs.
> So here is a try. Note I haven't tested on real heterogenous hardware
> so if you have it, please test it!
>
> git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
> timers/core
>
> HEAD: f0a87af6dab6f3a6dd8a603a2b9d7dcc86fd50e4
> Thanks,
> Frederic
> ---
>
> Frederic Weisbecker (6):
> timers/migration: Fix another hotplug activation race
> timers/migration: Abstract out hierarchy to prepare for CPU capacity awareness
> timers/migration: Track CPUs in a hierarchy
> timers/migration: Split per-capacity hierarchies
> timers/migration: Handle capacity in connect tracepoints
> scripts/timers: Add timer_migration_tree.py
>
> include/trace/events/timer_migration.h | 24 ++--
> kernel/time/timer_migration.c | 246 ++++++++++++++++++++++++---------
> kernel/time/timer_migration.h | 19 +++
> scripts/timer_migration_tree.py | 122 ++++++++++++++++
> 4 files changed, 337 insertions(+), 74 deletions(-)
Hi Frederic,
sorry for the late reaction to this, I completely missed it (CCing
linux-pm would have helped :) ).
I'm not convinced that unconditionally splitting the timer migration
hierarchy per-capacity is always the right tradeoff from a power point of
view. On some asymmetric systems we only have one or two CPUs in a given
capacity class. In that case the split can effectively remove most of the
useful timer migration opportunity for that class, even though allowing
migration across nearby capacities may still be better for idle residency.
I tested this on an Orion O6 system with the following topology:
online CPUs: 0-11
capacity 279: CPUs 2,3,4,5
capacity 866: CPUs 8,9
capacity 905: CPUs 6,7
capacity 984: CPUs 10,11
capacity 1024: CPUs 0,1
I compared the series up to and including the preparatory/refactoring
patch 3 against the full series including the per-capacity hierarchy split.
The numbers below are aggregate cpuidle residency deltas over a 600s run.
Idle workload:
variant LPI-0 LPI-1 LPI-2 LPI-1+2
base 2298.7s 1253.8s 2817.0s 4070.8s
full 2298.8s 1306.1s 2758.7s 4064.7s
delta +0.1s +52.3s -58.3s -6.1s
Grouped by capacity class, the LPI-2 loss is mostly on the lower-capacity
CPUs:
group base LPI-2 full LPI-2 delta full
279 1073.5s 1031.9s -41.6s
866 502.5s 486.4s -16.1s
905 499.7s 490.4s -9.3s
984 488.8s 496.0s +7.2s
1024 252.5s 254.0s +1.5s
For a light tbench run (tbench -R 20 -t 600 4), the result is more mixed:
variant LPI-0 LPI-1 LPI-2 LPI-1+2
base 2593.5s 1483.4s 410.3s 1893.6s
full 2605.3s 1446.5s 416.6s 1863.1s
delta +11.8s -36.9s +6.3s -30.5s
So tbench gets a small increase in deepest idle, but loses more in
LPI-1+2 overall.
If we do wanna keep the per-capacity hierarchy split, maybe it's sufficient to
gate this behind there being either a small number of capacity classes or
ensuring that they all have >=4 CPUs before splitting?
Kind regards,
Christian
next prev parent reply other threads:[~2026-06-03 22:51 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-23 16:53 Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 1/6] timers/migration: Fix another hotplug activation race Frederic Weisbecker
2026-05-06 6:22 ` [tip: timers/urgent] " tip-bot2 for Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 2/6] timers/migration: Abstract out hierarchy to prepare for CPU capacity awareness Frederic Weisbecker
2026-05-06 7:11 ` [tip: timers/core] " tip-bot2 for Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 3/6] timers/migration: Track CPUs in a hierarchy Frederic Weisbecker
2026-05-06 7:11 ` [tip: timers/core] " tip-bot2 for Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 4/6] timers/migration: Split per-capacity hierarchies Frederic Weisbecker
2026-05-06 7:11 ` [tip: timers/core] " tip-bot2 for Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 5/6] timers/migration: Handle capacity in connect tracepoints Frederic Weisbecker
2026-05-06 7:11 ` [tip: timers/core] " tip-bot2 for Frederic Weisbecker
2026-04-23 16:53 ` [PATCH 6/6] scripts/timers: Add timer_migration_tree.py Frederic Weisbecker
2026-05-06 7:11 ` [tip: timers/core] " tip-bot2 for Frederic Weisbecker
2026-06-03 22:50 ` Christian Loehle [this message]
2026-06-04 13:36 ` [PATCH 0/6] timers/migration: Handle heterogenous CPU capacities Frederic Weisbecker
2026-06-05 10:10 ` Christian Loehle
2026-06-10 15:02 ` Frederic Weisbecker
2026-07-14 15:00 ` Qais Yousef
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=3b79338f-6cfc-4722-8062-9103db2c8ad1@arm.com \
--to=christian.loehle@arm.com \
--cc=anna-maria@linutronix.de \
--cc=arighi@nvidia.com \
--cc=dietmar.eggemann@arm.com \
--cc=frederic@kernel.org \
--cc=jstultz@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=qyousef@layalina.io \
--cc=rafael@kernel.org \
--cc=sehee1.jeong@samsung.com \
--cc=tglx@linutronix.de \
/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®