Re: [RFC][RFT][PATCH 0/3] arm64: Enable asympacking for minor CPPC asymmetry

From: Christian Loehle

Date: Thu Mar 26 2026 - 04:23:30 EST


On 3/26/26 07:53, Vincent Guittot wrote:
> On Wed, 25 Mar 2026 at 19:13, Christian Loehle <christian.loehle@xxxxxxx> wrote:
>>
>> The scheduler currently handles CPU performance asymmetry via either:
>>
>> - SD_ASYM_PACKING: simple priority-based task placement (x86 ITMT)
>> - SD_ASYM_CPUCAPACITY: capacity-aware scheduling
>>
>> On arm64, capacity-aware scheduling is used for any detected capacity
>> differences.
>>
>> Some systems expose small per-CPU performance differences via CPPC
>> highest_perf (e.g. due to chip binning), resulting in slightly different
>> capacities (<~5%). These differences are sufficient to trigger
>> SD_ASYM_CPUCAPACITY, even though the system is otherwise effectively
>> symmetric.
>>
>> For such small deltas, capacity-aware scheduling is unnecessarily
>> complex. A simpler priority-based approach, similar to x86 ITMT, is
>> sufficient.
>
> I'm not convinced that moving to SD_ASYM_PACKING is the right way to
> move forward.
>
> 1st of all, do you target all kind of system or only SMT? It's not
> clear in your cover letter
>
> Moving on asym pack for !SMT doesn't make sense to me. If you don't
> want EAS enabled, you can disable it with
> /proc/sys/kernel/sched_energy_aware
>
> For SMT system and small capacity difference, I would prefer that we
> look at supporting SMT in SD_ASYM_CPUCAPACITY. Starting with
> select_idle_capacity

Quoting the cover letter below, I don't think SMT + SD_ASYM_CPUCAPACITY
can ever be theoretically sound and the results will become so wildly
different on a per-platform / uArch + workload basis, I'm not convinced
something useful would come out of it, but I'd be keen to see some
experiments on this.
IME a busy sibling steals so much more capacity than the difference I care
about here (<5%, busy SMT sibling is often 20-30%, sometimes up to 50% but
entirely dependent on workload and uarch as I've mentioned).
In any case, this series isn't (primarily) for SMT systems...

> [snip]
>> On platforms with SMT though asympacking makes a lot more sense than
>> capacity-aware scheduling, because arguing about capacity without
>> considering utilization of the sibling(s) (and the resulting potential
>> 'stolen' capacity we perceive) isn't theoretically sound.
>>
>> Christian Loehle (3):
>> sched/topology: Introduce arch hooks for asympacking
>> arch_topology: Export CPPC-based asympacking prios
>> arm64/sched: Enable CPPC-based asympacking
>>
>> arch/arm64/include/asm/topology.h | 6 +++++
>> arch/arm64/kernel/topology.c | 34 ++++++++++++++++++++++++++
>> drivers/base/arch_topology.c | 40 +++++++++++++++++++++++++++++++
>> include/linux/arch_topology.h | 24 +++++++++++++++++++
>> include/linux/sched/topology.h | 9 +++++++
>> kernel/sched/fair.c | 16 -------------
>> kernel/sched/topology.c | 34 ++++++++++++++++++++------
>> 7 files changed, 140 insertions(+), 23 deletions(-)
>>
>> --
>> 2.34.1
>>