Re: [PATCH 4/4] arm64: dts: rockchip: Add OPP data for CPU cores on RK3588

From: Dragan Simic
Date: Fri Jan 26 2024 - 15:04:27 EST


On 2024-01-26 13:56, Daniel Lezcano wrote:
On 26/01/2024 08:49, Dragan Simic wrote:
On 2024-01-26 08:30, Alexey Charkov wrote:
On Fri, Jan 26, 2024 at 11:05 AM Dragan Simic <dsimic@xxxxxxxxxxx> wrote:
On 2024-01-26 07:44, Alexey Charkov wrote:
> On Fri, Jan 26, 2024 at 10:32 AM Dragan Simic <dsimic@xxxxxxxxxxx>
> wrote:
>> On 2024-01-25 10:30, Daniel Lezcano wrote:
>> > On 24/01/2024 21:30, Alexey Charkov wrote:
>> >> By default the CPUs on RK3588 start up in a conservative performance
>> >> mode. Add frequency and voltage mappings to the device tree to enable

[ ... ]

Throttling would also lower the voltage at some point, which cools it
down much faster!

Of course, but the key is not to cool (and slow down) the CPU cores too
much, but just enough to stay within the available thermal envelope,
which is where the same-voltage, lower-frequency OPPs should shine.

That implies the resulting power is sustainable which I doubt it is the case.

Hmm, why wouldn't it be sustainable? Would you elaborate a bit, please?
I mean, there are so many factors that can't be known for sure in advance,
so providing additional CPU throttling granularity can only be helpful.

The voltage scaling makes the cooling effect efficient not the frequency.

For example:
opp5 = opp(2GHz, 1V) => 2 BogoWatt
opp4 = opp(1.9GHz, 1V) => 1.9 BogoWatt
opp3 = opp(1.8GHz, 0.9V) => 1.458 BogoWatt
[ other states but we focus on these 3 ]

opp5->opp4 => -5% compute capacity, -5% power, ratio=1
opp4->opp3 => -5% compute capacity, -23.1% power, ratio=21,6

opp5->opp3 => -10% compute capacity, -27.1% power, ratio=36.9

In burst operation (no thermal throttling), opp4 is pointless we agree on that.

Well, if there's no thermal throtting at all, the opp3 is also not
needed. In an unlikely scenario like that, the opp5 is all we need.

IMO the following will happen: in burst operation with thermal
throttling we hit the trip point and then the step wise governor
reduces opp5 -> opp4. We have slight power reduction but the
temperature does not decrease, so at the next iteration, it is
throttle at opp3. And at the end we have opp4 <-> opp3 back and forth
instead of opp5 <-> opp3.

Why should the temperature not decrease when switching from the opp5
to the opp4? See, we can't assume or know in advance that reducing
the power consumption by 5% wouldn't do anything; 5% is actually
quite a lot. If that would do absolutely nothing, then something
else would probably be wrong or not as expected.

Also, for some workloads it might be better to have rather frequent
transitions between the opp4 and the opp3, instead of staying at the
opp3 for longer priods of time. Running 100 MHz faster can be quite
significant, especially on two CPU cores.

It is probable we end up with an equivalent frequency average (or
compute capacity avg).

opp4 <-> opp3 (longer duration in states, less transitions)
opp5 <-> opp3 (shorter duration in states, more transitions)

Some platforms had their higher OPPs with the same voltage and they
failed to cool down the CPU in the long run.

Anyway, there is only one way to check it out :)

Alexey, is it possible to compare the compute duration for 'dhrystone'
with these voltage OPP and without ? (with a period of cool down
between the test in order to start at the same thermal condition) ?

I agree that testing and recording as much data as possible is the best
approach. However, quite frankly, we should run more different tests,
not only one synthetic test.