• Ionela Voinescu's avatar
    sched/topology: Condition EAS enablement on FIE support · fa50e2b4
    Ionela Voinescu authored
    In order to make accurate predictions across CPUs and for all performance
    states, Energy Aware Scheduling (EAS) needs frequency-invariant load
    tracking signals.
    
    EAS task placement aims to minimize energy consumption, and does so in
    part by limiting the search space to only CPUs with the highest spare
    capacity (CPU capacity - CPU utilization) in their performance domain.
    Those candidates are the placement choices that will keep frequency at
    its lowest possible and therefore save the most energy.
    
    But without frequency invariance, a CPU's utilization is relative to the
    CPU's current performance level, and not relative to its maximum
    performance level, which determines its capacity. As a result, it will
    fail to correctly indicate any potential spare capacity obtained by an
    increase in a CPU's performance level. Therefore, a non-invariant
    utilization signal would render the EAS task placement logic invalid.
    
    Now that we properly report support for the Frequency Invariance Engine
    (FIE) through arch_scale_freq_invariant() for arm and arm64 systems,
    while also ensuring a re-evaluation of the EAS use conditions for
    possible invariance status change, we can assert this is the case when
    initializing EAS. Warn and bail out otherwise.
    Suggested-by: default avatarQuentin Perret <qperret@google.com>
    Signed-off-by: default avatarIonela Voinescu <ionela.voinescu@arm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20201027180713.7642-4-ionela.voinescu@arm.com
    fa50e2b4
topology.c 59.4 KB