Re: [PATCH v5 15/23] PM: EM: Optimize em_cpu_energy() and remove division

From: Lukasz Luba
Date: Wed Jan 10 2024 - 08:52:48 EST




On 1/4/24 19:23, Qais Yousef wrote:
On 01/02/24 11:47, Lukasz Luba wrote:
Did you see a problem or just being extra cautious here?

There is no problem, 'cost' is a private coefficient for EAS only.

Let me ask differently, what goes wrong if you don't increase the resolution
here? Why is it necessary?



When you have 800mW at CPU capacity 1024, then the value is small (below
1 thousand).
Example:
power = 800000 uW
cost = 800000 / 1024 = 781

While I know from past that sometimes OPPs might have close voltage
values and a rounding could occur and make some OPPs inefficient
while they aren't.

This is what would happen when we have the 1x resolution:
/sys/kernel/debug/energy_model/cpu4/ps:1008000/cost:551
/sys/kernel/debug/energy_model/cpu4/ps:1200000/cost:644
/sys/kernel/debug/energy_model/cpu4/ps:1416000/cost:744
/sys/kernel/debug/energy_model/cpu4/ps:1512000/cost:851
/sys/kernel/debug/energy_model/cpu4/ps:408000/cost:493
/sys/kernel/debug/energy_model/cpu4/ps:600000/cost:493
/sys/kernel/debug/energy_model/cpu4/ps:816000/cost:493
The bottom 3 OPPs have the same 'cost' thus 2 OPPs are in-efficient,
which is not true (see below).

This is what would happen when we have the 10x resolution:
/sys/kernel/debug/energy_model/cpu4/ps:1008000/cost:5513
/sys/kernel/debug/energy_model/cpu4/ps:1200000/cost:6443
/sys/kernel/debug/energy_model/cpu4/ps:1416000/cost:7447
/sys/kernel/debug/energy_model/cpu4/ps:1512000/cost:8514
/sys/kernel/debug/energy_model/cpu4/ps:408000/cost:4934
/sys/kernel/debug/energy_model/cpu4/ps:600000/cost:4933
/sys/kernel/debug/energy_model/cpu4/ps:816000/cost:4934
Here the OPP with 600MHz is more efficient than 408MHz,
which is true. So only 408MHz will be marked as in-efficient OPP.


This is what would happen when we have the 100x resolution:
/sys/kernel/debug/energy_model/cpu4/ps:1008000/cost:55137
/sys/kernel/debug/energy_model/cpu4/ps:1200000/cost:64433
/sys/kernel/debug/energy_model/cpu4/ps:1416000/cost:74473
/sys/kernel/debug/energy_model/cpu4/ps:1512000/cost:85140
/sys/kernel/debug/energy_model/cpu4/ps:408000/cost:49346
/sys/kernel/debug/energy_model/cpu4/ps:600000/cost:49331
/sys/kernel/debug/energy_model/cpu4/ps:816000/cost:49346
The higher (100x) resolution does not bring that much in
practice.

If you have other questions, let's continue on v6 series.