[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <X6rL1zv/JuqOVBQu@trantor>
Date: Tue, 10 Nov 2020 17:20:23 +0000
From: Catalin Marinas <catalin.marinas@....com>
To: Ionela Voinescu <ionela.voinescu@....com>
Cc: mingo@...hat.com, peterz@...radead.org, vincent.guittot@...aro.org,
will@...nel.org, rjw@...ysocki.net, viresh.kumar@...aro.org,
dietmar.eggemann@....com, qperret@...gle.com,
valentin.schneider@....com, linux-pm@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
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@....com>
> Cc: Catalin Marinas <catalin.marinas@....com>
> Cc: Will Deacon <will@...nel.org>
Acked-by: Catalin Marinas <catalin.marinas@....com>
Powered by blists - more mailing lists