summaryrefslogtreecommitdiff
path: root/kernel/sched/cpufreq_schedutil.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-03-31 00:36:41 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-04-13 04:46:40 +0300
commit39b64aa1c007b98727db9f501266454fa403166c (patch)
treece151f4062839cfad3d306c3c14a38d2a3d3b19c /kernel/sched/cpufreq_schedutil.c
parent70e493f3bb6bac74112bb4a46bc5ff9342a936a7 (diff)
downloadlinux-39b64aa1c007b98727db9f501266454fa403166c.tar.xz
cpufreq: schedutil: Reduce frequencies slower
The schedutil governor reduces frequencies too fast in some situations which cases undesirable performance drops to appear. To address that issue, make schedutil reduce the frequency slower by setting it to the average of the value chosen during the previous iteration of governor computations and the new one coming from its frequency selection formula. Link: https://bugzilla.kernel.org/show_bug.cgi?id=194963 Reported-by: John <john.ettedgui@gmail.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'kernel/sched/cpufreq_schedutil.c')
-rw-r--r--kernel/sched/cpufreq_schedutil.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 848cb47094cd..b1fedf9932d6 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -101,6 +101,9 @@ static void sugov_update_commit(struct sugov_policy *sg_policy, u64 time,
if (sg_policy->next_freq == next_freq)
return;
+ if (sg_policy->next_freq > next_freq)
+ next_freq = (sg_policy->next_freq + next_freq) >> 1;
+
sg_policy->next_freq = next_freq;
sg_policy->last_freq_update_time = time;