Re: [RFC PATCH v2 0/1] cpuidle: teo: Introduce optional util-awareness

From: Lukasz Luba
Date: Fri Oct 28 2022 - 03:08:47 EST




On 10/20/22 20:52, Daniel Lezcano wrote:

Hi Kajetan,

On 20/10/2022 18:20, Kajetan Puchalski wrote:
Hi Rafael,

The avg_util value tells us nothing about how much the CPU is going to
be idle this time and it also tells us nothing about the
latency-sensitivity of the workload.

Yes, it tells us how much idle time there was on the given CPU in the
past, on the average, but there is zero information about the
distribution of that idle time in it.

So in the first place please tell me why it fundamentally makes sense
to use avg_util in CPU idle time management at all.

I have an alternative suggestion that could be a reasonable way forward
here. Instead of applying util-awareness on top of TEO where it would
have to be reconciled with how TEO is currently expected to work, I just
wrote a simple completely new governor which operates only on timer
events alongside util values.

I second the idea. I took a long time to investigate how to improve the governor and reached the conclusion having a dedicated governor for mobile platform makes sense. Also the behavior is very platform dependent.

Regarding the utilization, one of the issue is the kernel threads preventing a task to wake up on the same CPU and forcing its migration at wake up time. So the prediction is screwed up at that time.

There is a paper talking this issue [1]

I've done a 'mobile' governor, including the next interrupt prediction [2]. It is very simple and almost has the same results as the teo on my platform (rock960).

I'm not planning to upstream it because I don't have spare time to improve the results and take care of the IPIs. part.

Also the paradigm is radically different and you may be interested in the approach.

So if you want to rework, improve, test, upstream it, feel free to reuse the code.

  -- Daniel

[1] Dynamic workload characterization for power efficient scheduling on CMP systems : https://cseweb.ucsd.edu//~tullsen/islped10.pdf

[2] https://git.linaro.org/people/daniel.lezcano/linux.git/commit/?h=cpuidle/mobile-governor-v5.1&id=de1edb05e3c342f0738b414aa84263d6555b7462



Thanks Daniel! I forgot about your work in this area. As I have
responded in some other email in this thread, we might start
from a new small governor and than others can contribute.

Even this small governor that Kajetan showed me performs really
good on pixel6.

Regards,
Lukasz