Messages in this thread | | | Date | Mon, 15 Jan 2024 12:21:56 +0000 | From | Qais Yousef <> | Subject | Re: [PATCH v5 15/23] PM: EM: Optimize em_cpu_energy() and remove division |
| |
On 01/10/24 13:53, Lukasz Luba wrote: > > > 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.
So it seems a uW is not sufficient enough. We moved from mW because of resolution already. Shall we make it nW then and multiply by 1000 always? The choice of 10 looks arbitrary IMHO
> > If you have other questions, let's continue on v6 series.
| |