On Mon, May 9, 2016 at 11:20 PM, Steve Muckle <steve.muc...@linaro.org> wrote: > The rate limit timestamp (last_freq_update_time) is currently advanced > anytime schedutil re-evaluates the policy regardless of whether the CPU > frequency is changed or not. This means that utilization updates which > have no effect can cause much more significant utilization updates > (which require a large increase or decrease in CPU frequency) to be > delayed due to rate limiting. > > Instead only update the rate limiting timstamp when the requested > target-supported frequency changes. The rate limit will now apply to > the rate of CPU frequency changes rather than the rate of > re-evaluations of the policy frequency. > > Signed-off-by: Steve Muckle <smuc...@linaro.org>
I'm sort of divided here to be honest. > --- > kernel/sched/cpufreq_schedutil.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/kernel/sched/cpufreq_schedutil.c > b/kernel/sched/cpufreq_schedutil.c > index e185075fcb5c..4d2907c8a142 100644 > --- a/kernel/sched/cpufreq_schedutil.c > +++ b/kernel/sched/cpufreq_schedutil.c > @@ -117,12 +117,11 @@ static void sugov_update_commit(struct sugov_cpu > *sg_cpu, int cpu, u64 time, > struct sugov_policy *sg_policy = sg_cpu->sg_policy; > struct cpufreq_policy *policy = sg_policy->policy; > > - sg_policy->last_freq_update_time = time; > - > if (sg_policy->next_freq == next_freq) { > trace_cpu_frequency(policy->cur, cpu); You should at least rate limit the trace_cpu_frequency() thing here if you don't want to advance the last update time I think, or you may easily end up with the trace buffer flooded by irrelevant stuff. > return; > } > + sg_policy->last_freq_update_time = time; > sg_policy->next_freq = next_freq; > > if (sugov_queue_remote_callback(sg_policy, cpu)) > -- > 2.4.10 >