Thread (8 messages) 8 messages, 2 authors, 2017-01-25

Re: Delayed acpi frequency governor call

From: Viresh Kumar <viresh.kumar@linaro.org>
Date: 2017-01-20 10:15:52

+ PM list.

On 20-01-17, 10:48, Philipp Miedl wrote:
Hi!

I'm using the kernel version 4.4.0-59-generic and 4.4.0 with acpi cpufreq
drivers (cpufrequtils 008) on a Lenovo T440p laptop. Now I've bumped into
some weird behaviour:
it can happen that the call to the governor is delayed for so long, that in
the governor the if-statement in cpufreq_governor.c line 138
is true, which means the governor thinks the cpu was idle. This can lead to
the case that the frequency is still scaled up when it should in
fact be scaled down.

Now I've written a small programm which ensures that the cpu is never idle
for longer than 850us, but does not generate a cpu utilization higher
than 5% - still the behaviour is the same. I've looked a bit closer at this
and I figured out that if I increase the utilization of the observed CPU,
at utilzations higher than 80% the maximum delay between two governor calls
increases and can rise almost to 10x sampling rate
(/sys/drivers/system/cpu/cpufreq/sampling_rate).
Weirdly enough, after a long time (>1s) the average call time of the
governor is always around the specified sampling rate.

I could not fully understand how the governor is call and this work queue
works and therefore I also have a hard time making sense of this behaviour.
Can anyone please help me out?
Have a look at below commit:

commit 00bfe05889e9 ("cpufreq: conservative: Decrease frequency faster
for deferred updates")

It may be related to what you are observing.

-- 
viresh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help