[RFT][DONOTMERGE][PATCH 0/6] timers/migration: Prioritize lower capacity CPUs as migrators

From: Frederic Weisbecker

Date: Thu Jun 25 2026 - 12:41:43 EST


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(-)