Re: [PATCH] cpufreq: schedutil: Always trace frequency if it does not change

From: Rafael J. Wysocki
Date: Wed Mar 22 2017 - 08:52:32 EST


On Wed, Mar 22, 2017 at 10:29 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> On Wed, Mar 22, 2017 at 01:56:53AM +0100, Rafael J. Wysocki wrote:
>> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>>
>> sugov_update_commit() calls trace_cpu_frequency() to record the
>> current CPU frequency if it has not changed in the fast switch case
>> to prevent utilities from getting confused (they may report that the
>> CPU is idle if the frequency has not been recorded for too long, for
>> example).
>
> That seems like buggy tools; we should then fix the tools, not the
> kernel to emit more superfluous information.
>
>> However, the same problem may occur for a cpufreq driver that doesn't
>> support fast frequency switching and implements the ->target callback
>> (that is, it doesn't use frequency tables), but trace_cpu_frequency()
>> is not called if frequency updates are skipped in that case.
>
> I'm having trouble parsing that; am I right in understanding this is the
> exact same scenario where only superfluous changes are omitted?

Yes, that's the same scenario basically, which is the point of the patch. :-)

>> For this reason, modify sugov_update_commit() to always call
>> trace_cpu_frequency() when the new frequency to be set is equal to
>> the one that was set previously and reorganize the code in there to
>> reduce duplication somewhat.
>
> So why not fix the tools?

Because I can't.

I just can't go and fix all of the tools binaries that people use out
there and I want them to use recent kernels at the same time.

But anyway, I think that the code with the patch looks better than
without it regardless and having a frivolous difference there between
the two cases is not useful.