On Thu, May 26, 2016 at 9:16 AM, Viresh Kumar <[email protected]> wrote: > On 25-05-16, 19:53, Steve Muckle wrote: >> The slow-path frequency transition path is relatively expensive as it >> requires waking up a thread to do work. Should support be added for >> remote CPU cpufreq updates that is also expensive since it requires an >> IPI. These activities should be avoided if they are not necessary. >> >> To that end, calculate the actual driver-supported frequency required by >> the new utilization value in schedutil by using the recently added >> cpufreq_driver_resolve_freq callback. If it is the same as the >> previously requested driver frequency then there is no need to continue >> with the update assuming the cpu frequency limits have not changed. This >> will have additional benefits should the semantics of the rate limit be >> changed to apply solely to frequency transitions rather than to >> frequency calculations in schedutil.
[cut] > I also have a doubt (I am quite sure Rafael will have a reason for > that, which I am failing to understand now), on why we are doing > next_freq == UINT_MAX in sugov_should_update_freq(). > > I understand that because the limits might have changed, > need_freq_update would have been set to true. We should evaluate > next-freq again without worrying about the load or the time since last > evaluation. This is in response to the "limits" event (or to the ->limits call after my recent patches). That event basically means "something has changed, so if you have cached anything, invalidate it" to the governor. Accordingly, it invalidates next_freq, because that's a cached value. > But what will happen by forcefully calling the cpufreq routines to > change the frequency, if next_freq hasn't changed even after limits > updates? I can't really parse the above question, so I'm not going to try to answer it. :-) > Wouldn't that call always return early because the new freq > and the current freq are going to be same ? > > @Rafael: Sorry for asking this so late :( It is not too late. If there's a problem somewhere, it needs to be fixed, but at this point I have no idea what you are asking about.

