From: Frederic Weisbecker <frederic@kernel.org>
To: Christian Loehle <christian.loehle@arm.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Sehee Jeong <sehee1.jeong@samsung.com>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>
Subject: [RFT][DONOTMERGE][PATCH 0/6] timers/migration: Prioritize lower capacity CPUs as migrators
Date: Thu, 25 Jun 2026 18:41:08 +0200 [thread overview]
Message-ID: <20260625164114.51454-1-frederic@kernel.org> (raw)
Hi,
It has been reported that the timer migration tree wasn't too helpful
on asymetric systems, with timers migrating too often to big capacity
CPUs, waking them more frequently from deep idle state.
Splitting the tree into per CPU capacity hierarchies doesn't seem to
improve the situation.
So here is another proposal: gather CPUs belonging to the same capacity
under the same groups and finally join those capacity groups under a
common root. Exactly in the same way it is done for NUMA systems.
And then always pick up the lowest capacity non-idle CPU group as the
migrator with the hope that handling timers will keep lower capacity
CPUs busy enough to increase their chances to become global idle
migrators.
Please give it a try but make sure you have fewer than 9 capacities
on your system. Handling more will require a bit more throughts. Let's
see first if this is the right way to go.
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
timers/migration-capacity
HEAD: 28f02a6747ac4343f3596aaa3b749dea95577478
Thanks,
Frederic
---
Frederic Weisbecker (6):
timers/migration: Revert per CPU capacity hierarchy
timers/migration: Defer initialization after capacity topology is setup
sched/topology: Account asym capacities number
timers/migration: Group CPUs per capacity
timers/migration: Prefer lower capacity groups as migrators
scripts/timer_migration_tree.py: Dump mask of each group
include/linux/sched/topology.h | 3 +
include/trace/events/timer_migration.h | 48 ++--
kernel/sched/topology.c | 44 ++++
kernel/time/timer_migration.c | 393 +++++++++++++++------------------
kernel/time/timer_migration.h | 33 +--
scripts/timer_migration_tree.py | 65 +++---
6 files changed, 288 insertions(+), 298 deletions(-)
next reply other threads:[~2026-06-25 16:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-25 16:41 Frederic Weisbecker [this message]
2026-06-25 16:41 ` [PATCH 1/6] timers/migration: Revert per CPU capacity hierarchy Frederic Weisbecker
2026-06-25 16:41 ` [PATCH 2/6] timers/migration: Defer initialization after capacity topology is setup Frederic Weisbecker
2026-06-25 16:41 ` [PATCH 3/6] sched/topology: Account asym capacities number Frederic Weisbecker
2026-06-25 16:41 ` [PATCH 4/6] timers/migration: Group CPUs per capacity Frederic Weisbecker
2026-06-25 16:41 ` [PATCH 5/6] timers/migration: Prefer lower capacity groups as migrators Frederic Weisbecker
2026-06-25 16:41 ` [PATCH 6/6] scripts/timer_migration_tree.py: Dump mask of each group Frederic Weisbecker
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=20260625164114.51454-1-frederic@kernel.org \
--to=frederic@kernel.org \
--cc=anna-maria@linutronix.de \
--cc=christian.loehle@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.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