[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <db2ba48c-f1f4-41ca-99e6-4cb756a8ac00@arm.com>
Date: Wed, 18 Oct 2023 12:06:24 +0100
From: Lukasz Luba <lukasz.luba@....com>
To: Vincent Guittot <vincent.guittot@...aro.org>
Cc: conor.dooley@...rochip.com, will@...nel.org,
ionela.voinescu@....com, vschneid@...hat.com, mgorman@...e.de,
bsegall@...gle.com, dietmar.eggemann@....com, peterz@...radead.org,
sudeep.holla@....com, aou@...s.berkeley.edu, palmer@...belt.com,
linux-pm@...r.kernel.org, linux-riscv@...ts.infradead.org,
pierre.gondois@....com, paul.walmsley@...ive.com,
catalin.marinas@....com, linux@...linux.org.uk,
suagrfillet@...il.com, ajones@...tanamicro.com,
juri.lelli@...hat.com, lftan@...nel.org, mingo@...hat.com,
rafael@...nel.org, gregkh@...uxfoundation.org, rostedt@...dmis.org,
bristot@...hat.com, viresh.kumar@...aro.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/6] topology: add a new arch_scale_freq_reference
On 10/9/23 11:36, Vincent Guittot wrote:
> Create a new method to get a unique and fixed max frequency. Currently
> cpuinfo.max_freq or the highest (or last) state of performance domain are
> used as the max frequency when computing the frequency for a level of
> utilization but:
> - cpuinfo_max_freq can change at runtime. boost is one example of
> such change.
> - cpuinfo.max_freq and last item of the PD can be different leading to
> different results between cpufreq and energy model.
>
> We need to save the reference frequency that has been used when computing
> the CPUs capacity and use this fixed and coherent value to convert between
> frequency and CPU's capacity.
>
> In fact, we already save the frequency that has been used when computing
> the capacity of each CPU. We extend the precision to save khZ instead of
> Mhz currently and we modify the type to be aligned with other variables
> used when converting frequency to capacity and the other way.
>
> Signed-off-by: Vincent Guittot <vincent.guittot@...aro.org>
> ---
> arch/arm/include/asm/topology.h | 1 +
> arch/arm64/include/asm/topology.h | 1 +
> arch/riscv/include/asm/topology.h | 1 +
> drivers/base/arch_topology.c | 29 ++++++++++++++---------------
> include/linux/arch_topology.h | 7 +++++++
> 5 files changed, 24 insertions(+), 15 deletions(-)
[snip]
> @@ -170,9 +172,9 @@ DEFINE_PER_CPU(unsigned long, thermal_pressure);
> * operating on stale data when hot-plug is used for some CPUs. The
> * @capped_freq reflects the currently allowed max CPUs frequency due to
> * thermal capping. It might be also a boost frequency value, which is bigger
> - * than the internal 'freq_factor' max frequency. In such case the pressure
> - * value should simply be removed, since this is an indication that there is
> - * no thermal throttling. The @capped_freq must be provided in kHz.
> + * than the internal 'capacity_ref_freq' max frequency. In such case the
> + * pressure value should simply be removed, since this is an indication that
> + * there is no thermal throttling. The @capped_freq must be provided in kHz.
> */
> void topology_update_thermal_pressure(const struct cpumask *cpus,
> unsigned long capped_freq)
> @@ -183,10 +185,7 @@ void topology_update_thermal_pressure(const struct cpumask *cpus,
>
> cpu = cpumask_first(cpus);
> max_capacity = arch_scale_cpu_capacity(cpu);
> - max_freq = per_cpu(freq_factor, cpu);
> -
> - /* Convert to MHz scale which is used in 'freq_factor' */
> - capped_freq /= 1000;
I do like this small speed-up and I'm happy that it's possible with this
new design. (IIRC some of your platforms can update the thermal
pressure quite many time per sec - that might be the reason why
you see some speed-ups mentioned in the cover letter)
> + max_freq = arch_scale_freq_ref(cpu);
>
LGTM
Reviewed-by: Lukasz Luba <lukasz.luba@....com>
Powered by blists - more mailing lists