Messages in this thread | | | Date | Tue, 10 Nov 2020 17:20:23 +0000 | From | Catalin Marinas <> | Subject | Re: [PATCH RESEND v2 2/3] arm64: rebuild sched domains on invariance status changes |
| |
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@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
| |