cpufreq: schedutil: Ignore CPU load older than WALT window size
The old code used to ignore CPU load older than 1 tick. Since the WALT window size can be more than 1 tick (and is configurable), this can cause an incorrect frequency drop in the middle of a WALT window. Use WALT window size to ignore CPU load instead. Change-Id: If42420f595ba9722866174c2cda8b6c2fdf34f92 Signed-off-by: Saravana Kannan <skannan@codeaurora.org> Signed-off-by: Rohit Gupta <rohgup@codeaurora.org>
This commit is contained in:
committed by
Rohit Gupta
parent
e5689e1c30
commit
05d2ca2420
@@ -73,6 +73,7 @@ struct sugov_cpu {
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct sugov_cpu, sugov_cpu);
|
||||
static unsigned int stale_ns;
|
||||
|
||||
/************************ Governor internals ***********************/
|
||||
|
||||
@@ -299,6 +300,7 @@ static unsigned int sugov_next_freq_shared(struct sugov_cpu *sg_cpu, u64 time)
|
||||
{
|
||||
struct sugov_policy *sg_policy = sg_cpu->sg_policy;
|
||||
struct cpufreq_policy *policy = sg_policy->policy;
|
||||
u64 last_freq_update_time = sg_policy->last_freq_update_time;
|
||||
unsigned long util = 0, max = 1;
|
||||
unsigned int j;
|
||||
|
||||
@@ -314,8 +316,8 @@ static unsigned int sugov_next_freq_shared(struct sugov_cpu *sg_cpu, u64 time)
|
||||
* enough, don't take the CPU into account as it probably is
|
||||
* idle now (and clear iowait_boost for it).
|
||||
*/
|
||||
delta_ns = time - j_sg_cpu->last_update;
|
||||
if (delta_ns > TICK_NSEC) {
|
||||
delta_ns = last_freq_update_time - j_sg_cpu->last_update;
|
||||
if (delta_ns > stale_ns) {
|
||||
j_sg_cpu->iowait_boost = 0;
|
||||
j_sg_cpu->iowait_boost_pending = false;
|
||||
continue;
|
||||
@@ -592,6 +594,7 @@ static int sugov_init(struct cpufreq_policy *policy)
|
||||
|
||||
policy->governor_data = sg_policy;
|
||||
sg_policy->tunables = tunables;
|
||||
stale_ns = sched_ravg_window + (sched_ravg_window >> 3);
|
||||
|
||||
ret = kobject_init_and_add(&tunables->attr_set.kobj, &sugov_tunables_ktype,
|
||||
get_governor_parent_kobj(policy), "%s",
|
||||
|
||||
Reference in New Issue
Block a user