mbox series

[v2,0/4] Energy Model power in micro-Watts and SCMI v3.1 alignment

Message ID 20220707071555.10085-1-lukasz.luba@arm.com
Headers show
Series Energy Model power in micro-Watts and SCMI v3.1 alignment | expand

Message

Lukasz Luba July 7, 2022, 7:15 a.m. UTC
Hi all,

This is a patch set which changes Energy Model power values scale to
micro-Watts. It also upgrades the SCMI performance layer + scmi-cpufreq
driver to leverage the SCMI v3.1 spec and process micro-Watts power values
coming from FW. The higher precision in EM power field solves an issue
of a rounding error, which then can be misinterpreted as 'inefficient OPP'.
An example rounding issue calculation is present in patch 1/4 description.

Changes:
v2
- simplified 32bit checks for max number of CPUs preventing energy
  estimation overflow
- added Reviewed-by and ACKs
v1 [1]

Regards,
Lukasz Luba

[1] https://lore.kernel.org/lkml/20220622145802.13032-1-lukasz.luba@arm.com/

Lukasz Luba (4):
  PM: EM: convert power field to micro-Watts precision and align drivers
  Documentation: EM: Switch to micro-Watts scale
  firmware: arm_scmi: Get detailed power scale from perf
  cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1

 Documentation/power/energy-model.rst  | 14 +++----
 drivers/cpufreq/mediatek-cpufreq-hw.c |  7 ++--
 drivers/cpufreq/scmi-cpufreq.c        | 15 +++++++-
 drivers/firmware/arm_scmi/perf.c      | 18 +++++----
 drivers/opp/of.c                      | 15 ++++----
 drivers/powercap/dtpm_cpu.c           |  5 +--
 drivers/thermal/cpufreq_cooling.c     | 13 ++++++-
 drivers/thermal/devfreq_cooling.c     | 19 ++++++++--
 include/linux/energy_model.h          | 54 +++++++++++++++++++--------
 include/linux/scmi_protocol.h         |  8 +++-
 kernel/power/energy_model.c           | 24 ++++++++----
 11 files changed, 132 insertions(+), 60 deletions(-)

Comments

Lukasz Luba July 7, 2022, 10:46 a.m. UTC | #1
Hi Rafael,

On 7/7/22 08:15, Lukasz Luba wrote:
> Hi all,
> 
> This is a patch set which changes Energy Model power values scale to
> micro-Watts. It also upgrades the SCMI performance layer + scmi-cpufreq
> driver to leverage the SCMI v3.1 spec and process micro-Watts power values
> coming from FW. The higher precision in EM power field solves an issue
> of a rounding error, which then can be misinterpreted as 'inefficient OPP'.
> An example rounding issue calculation is present in patch 1/4 description.
> 
> Changes:
> v2
> - simplified 32bit checks for max number of CPUs preventing energy
>    estimation overflow
> - added Reviewed-by and ACKs
> v1 [1]
> 
> Regards,
> Lukasz Luba
> 
> [1] https://lore.kernel.org/lkml/20220622145802.13032-1-lukasz.luba@arm.com/
> 
> Lukasz Luba (4):
>    PM: EM: convert power field to micro-Watts precision and align drivers
>    Documentation: EM: Switch to micro-Watts scale
>    firmware: arm_scmi: Get detailed power scale from perf
>    cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1
> 
>   Documentation/power/energy-model.rst  | 14 +++----
>   drivers/cpufreq/mediatek-cpufreq-hw.c |  7 ++--
>   drivers/cpufreq/scmi-cpufreq.c        | 15 +++++++-
>   drivers/firmware/arm_scmi/perf.c      | 18 +++++----
>   drivers/opp/of.c                      | 15 ++++----
>   drivers/powercap/dtpm_cpu.c           |  5 +--
>   drivers/thermal/cpufreq_cooling.c     | 13 ++++++-
>   drivers/thermal/devfreq_cooling.c     | 19 ++++++++--
>   include/linux/energy_model.h          | 54 +++++++++++++++++++--------
>   include/linux/scmi_protocol.h         |  8 +++-
>   kernel/power/energy_model.c           | 24 ++++++++----
>   11 files changed, 132 insertions(+), 60 deletions(-)
> 

I got ACKs (and on Reviewed-by) for this patch set.
Could you take this via your PM tree, please?
Lukasz Luba July 7, 2022, 10:53 a.m. UTC | #2
On 7/7/22 11:53, Viresh Kumar wrote:
> On 07-07-22, 08:15, Lukasz Luba wrote:
>> The milli-Watts precision causes rounding errors while calculating
>> efficiency cost for each OPP. This is especially visible in the 'simple'
>> Energy Model (EM), where the power for each OPP is provided from OPP
>> framework. This can cause some OPPs to be marked inefficient, while
>> using micro-Watts precision that might not happen.
>>
>> Update all EM users which access 'power' field and assume the value is
>> in milli-Watts.
>>
>> Solve also an issue with potential overflow in calculation of energy
>> estimation on 32bit machine. It's needed now since the power value
>> (thus the 'cost' as well) are higher.
>>
>> Example calculation which shows the rounding error and impact:
>>
>> power = 'dyn-power-coeff' * volt_mV * volt_mV * freq_MHz
>>
>> power_a_uW = (100 * 600mW * 600mW * 500MHz) / 10^6 = 18000
>> power_a_mW = (100 * 600mW * 600mW * 500MHz) / 10^9 = 18
>>
>> power_b_uW = (100 * 605mW * 605mW * 600MHz) / 10^6 = 21961
>> power_b_mW = (100 * 605mW * 605mW * 600MHz) / 10^9 = 21
>>
>> max_freq = 2000MHz
>>
>> cost_a_mW = 18 * 2000MHz/500MHz = 72
>> cost_a_uW = 18000 * 2000MHz/500MHz = 72000
>>
>> cost_b_mW = 21 * 2000MHz/600MHz = 70 // <- artificially better
>> cost_b_uW = 21961 * 2000MHz/600MHz = 73203
>>
>> The 'cost_b_mW' (which is based on old milli-Watts) is misleadingly
>> better that the 'cost_b_uW' (this patch uses micro-Watts) and such
>> would have impact on the 'inefficient OPPs' information in the Cpufreq
>> framework. This patch set removes the rounding issue.
>>
>> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
>> ---
>>   drivers/cpufreq/mediatek-cpufreq-hw.c |  7 ++--
>>   drivers/cpufreq/scmi-cpufreq.c        |  6 +++
>>   drivers/opp/of.c                      | 15 ++++----
>>   drivers/powercap/dtpm_cpu.c           |  5 +--
>>   drivers/thermal/cpufreq_cooling.c     | 13 ++++++-
>>   drivers/thermal/devfreq_cooling.c     | 19 ++++++++--
>>   include/linux/energy_model.h          | 54 +++++++++++++++++++--------
>>   kernel/power/energy_model.c           | 24 ++++++++----
>>   8 files changed, 100 insertions(+), 43 deletions(-)
> 
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> 

Thank you Viresh for the ACKs!
Lukasz Luba July 15, 2022, 8:56 a.m. UTC | #3
Hi Rafael,

gentle ping.

On 7/7/22 11:46, Lukasz Luba wrote:
> Hi Rafael,
> 
> On 7/7/22 08:15, Lukasz Luba wrote:
>> Hi all,
>>
>> This is a patch set which changes Energy Model power values scale to
>> micro-Watts. It also upgrades the SCMI performance layer + scmi-cpufreq
>> driver to leverage the SCMI v3.1 spec and process micro-Watts power 
>> values
>> coming from FW. The higher precision in EM power field solves an issue
>> of a rounding error, which then can be misinterpreted as 'inefficient 
>> OPP'.
>> An example rounding issue calculation is present in patch 1/4 
>> description.
>>
>> Changes:
>> v2
>> - simplified 32bit checks for max number of CPUs preventing energy
>>    estimation overflow
>> - added Reviewed-by and ACKs
>> v1 [1]
>>
>> Regards,
>> Lukasz Luba
>>
>> [1] 
>> https://lore.kernel.org/lkml/20220622145802.13032-1-lukasz.luba@arm.com/
>>
>> Lukasz Luba (4):
>>    PM: EM: convert power field to micro-Watts precision and align drivers
>>    Documentation: EM: Switch to micro-Watts scale
>>    firmware: arm_scmi: Get detailed power scale from perf
>>    cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1
>>
>>   Documentation/power/energy-model.rst  | 14 +++----
>>   drivers/cpufreq/mediatek-cpufreq-hw.c |  7 ++--
>>   drivers/cpufreq/scmi-cpufreq.c        | 15 +++++++-
>>   drivers/firmware/arm_scmi/perf.c      | 18 +++++----
>>   drivers/opp/of.c                      | 15 ++++----
>>   drivers/powercap/dtpm_cpu.c           |  5 +--
>>   drivers/thermal/cpufreq_cooling.c     | 13 ++++++-
>>   drivers/thermal/devfreq_cooling.c     | 19 ++++++++--
>>   include/linux/energy_model.h          | 54 +++++++++++++++++++--------
>>   include/linux/scmi_protocol.h         |  8 +++-
>>   kernel/power/energy_model.c           | 24 ++++++++----
>>   11 files changed, 132 insertions(+), 60 deletions(-)
>>
> 
> I got ACKs (and on Reviewed-by) for this patch set.
> Could you take this via your PM tree, please?

This patch set is on our roadmap and would be good if it could
go as v5.20 material.

There are Acks for these patch set. If you need some
help with this (like rebasing, etc), just ping me.

Could you take them, please?

Regards,
Lukasz
Rafael J. Wysocki July 15, 2022, 5:18 p.m. UTC | #4
On Fri, Jul 15, 2022 at 10:56 AM Lukasz Luba <lukasz.luba@arm.com> wrote:
>
> Hi Rafael,
>
> gentle ping.
>
> On 7/7/22 11:46, Lukasz Luba wrote:
> > Hi Rafael,
> >
> > On 7/7/22 08:15, Lukasz Luba wrote:
> >> Hi all,
> >>
> >> This is a patch set which changes Energy Model power values scale to
> >> micro-Watts. It also upgrades the SCMI performance layer + scmi-cpufreq
> >> driver to leverage the SCMI v3.1 spec and process micro-Watts power
> >> values
> >> coming from FW. The higher precision in EM power field solves an issue
> >> of a rounding error, which then can be misinterpreted as 'inefficient
> >> OPP'.
> >> An example rounding issue calculation is present in patch 1/4
> >> description.
> >>
> >> Changes:
> >> v2
> >> - simplified 32bit checks for max number of CPUs preventing energy
> >>    estimation overflow
> >> - added Reviewed-by and ACKs
> >> v1 [1]
> >>
> >> Regards,
> >> Lukasz Luba
> >>
> >> [1]
> >> https://lore.kernel.org/lkml/20220622145802.13032-1-lukasz.luba@arm.com/
> >>
> >> Lukasz Luba (4):
> >>    PM: EM: convert power field to micro-Watts precision and align drivers
> >>    Documentation: EM: Switch to micro-Watts scale
> >>    firmware: arm_scmi: Get detailed power scale from perf
> >>    cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1
> >>
> >>   Documentation/power/energy-model.rst  | 14 +++----
> >>   drivers/cpufreq/mediatek-cpufreq-hw.c |  7 ++--
> >>   drivers/cpufreq/scmi-cpufreq.c        | 15 +++++++-
> >>   drivers/firmware/arm_scmi/perf.c      | 18 +++++----
> >>   drivers/opp/of.c                      | 15 ++++----
> >>   drivers/powercap/dtpm_cpu.c           |  5 +--
> >>   drivers/thermal/cpufreq_cooling.c     | 13 ++++++-
> >>   drivers/thermal/devfreq_cooling.c     | 19 ++++++++--
> >>   include/linux/energy_model.h          | 54 +++++++++++++++++++--------
> >>   include/linux/scmi_protocol.h         |  8 +++-
> >>   kernel/power/energy_model.c           | 24 ++++++++----
> >>   11 files changed, 132 insertions(+), 60 deletions(-)
> >>
> >
> > I got ACKs (and on Reviewed-by) for this patch set.
> > Could you take this via your PM tree, please?
>
> This patch set is on our roadmap and would be good if it could
> go as v5.20 material.
>
> There are Acks for these patch set. If you need some
> help with this (like rebasing, etc), just ping me.
>
> Could you take them, please?

All patches in the series applied as 5.20 material, thanks!