Re: [PATCH RESEND v2 2/3] arm64: rebuild sched domains on invariance status changes
From: Catalin Marinas
Date: Tue Nov 10 2020 - 12:20:32 EST
On Tue, Oct 27, 2020 at 06:07:12PM +0000, Ionela Voinescu wrote:
> Task scheduler behavior depends on frequency invariance (FI) support and
> the resulting invariant load tracking signals. For example, in order to
> make accurate predictions across CPUs for all performance states, Energy
> Aware Scheduling (EAS) needs frequency-invariant load tracking signals
> and therefore it has a direct dependency on FI. This dependency is known,
> but EAS enablement is not yet conditioned on the presence of FI during
> the built of the scheduling domain hierarchy.
>
> Before this is done, the following must be considered: while
> arch_scale_freq_invariant() will see changes in FI support and could
> be used to condition the use of EAS, it could return different values
> during system initialisation.
>
> For arm64, such a scenario will happen for a system that does not support
> cpufreq driven FI, but does support counter-driven FI. For such a system,
> arch_scale_freq_invariant() will return false if called before counter
> based FI initialisation, but change its status to true after it.
> If EAS becomes explicitly dependent on FI this would affect the task
> scheduler behavior which builds its scheduling domain hierarchy well
> before the late counter-based FI init. During that process, EAS would be
> disabled due to its dependency on FI.
>
> Two points of future early calls to arch_scale_freq_invariant() which
> would determine EAS enablement are:
> - (1) drivers/base/arch_topology.c:126 <<update_topology_flags_workfn>>
> rebuild_sched_domains();
> This will happen after CPU capacity initialisation.
> - (2) kernel/sched/cpufreq_schedutil.c:917 <<rebuild_sd_workfn>>
> rebuild_sched_domains_energy();
> -->rebuild_sched_domains();
> This will happen during sched_cpufreq_governor_change() for the
> schedutil cpufreq governor.
>
> Therefore, before enforcing the presence of FI support for the use of EAS,
> ensure the following: if there is a change in FI support status after
> counter init, use the existing rebuild_sched_domains_energy() function to
> trigger a rebuild of the scheduling and performance domains that in turn
> will determine the enablement of EAS.
>
> Signed-off-by: Ionela Voinescu <ionela.voinescu@xxxxxxx>
> Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
> Cc: Will Deacon <will@xxxxxxxxxx>
Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx>