RE: [PATCH v2] cpuidle: Use nanoseconds as the unit of time

From: Doug Smythies
Date: Fri Nov 08 2019 - 03:45:46 EST


On 2019.11.07 17:44 Rafael J. Wysocki wrote:
> On Thu, Nov 7, 2019 at 3:25 PM Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote:
>>
>> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>>
>> Currently, the cpuidle subsystem uses microseconds as the unit of
>> time which (among other things) causes the idle loop to incur some
>> integer division overhead for no clear benefit.
>>
>> In order to allow cpuidle to measure time in nanoseconds, add two
>> additional fields, exit_latency_ns and target_residency_ns, to
>> represent the exit latency and target residency of an idle state
>> in nanoseconds, respectively, to struct cpuidle_state_usage and
>> initialize them with the help of the corresponding values in
>> microseconds provided by drivers. In addition to that, change
>> cpuidle_governor_latency_req() to return the idle state exit
>> latency constraint in nanoseconds.
>>
>> With that, meeasure idle state residency (last_residency_ns in
>> struct cpuidle_device and time_ns in struct cpuidle_driver) in
>> nanoseconds and update the cpuidle core and governors accordingly.
>>
>> However, the menu governor still computes typical intervals in
>> microseconds to avoid integer overflows.
>
> Since this addresses all of the comments received by the RFC version
> that was posted over a month ago and I don't see any more issues with
> it, I'm tempted to simply queue it up for 5.5 unless somebody sees a
> good enough reason why that would be a bad idea.

Could I please have another day or two?

I did try the RFC version, but not much as I went off on those
teo issues and backtracked pretty quickly.

I have been running this v2 today, with both menu and teo
governors. Acquiring some baseline reference data to compare
to now. The menu governor response seems different (Supporting
information/graphs will come later).
teo just started.

I lost a bunch of time due to being somewhat linux-next challenged.

... Doug