Message ID | 1472236848-17038-2-git-send-email-smuckle@linaro.org (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
On Friday, August 26, 2016 11:40:47 AM Steve Muckle wrote: > PELT does not consider SMT when scaling its utilization values via > arch_scale_cpu_capacity(). The value in rq->cpu_capacity_orig does > take SMT into consideration though and therefore may be smaller than > the utilization reported by PELT. > > On an Intel i7-3630QM for example rq->cpu_capacity_orig is 589 but > util_avg scales up to 1024. This means that a 50% utilized CPU will show > up in schedutil as ~86% busy. > > Fix this by using the same CPU scaling value in schedutil as that which > is used by PELT. > > Signed-off-by: Steve Muckle <smuckle@linaro.org> This is fine by me. Peter, any objections? > --- > kernel/sched/cpufreq_schedutil.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c > index 60d985f4dc47..cb8a77b1ef1b 100644 > --- a/kernel/sched/cpufreq_schedutil.c > +++ b/kernel/sched/cpufreq_schedutil.c > @@ -147,7 +147,9 @@ static unsigned int get_next_freq(struct sugov_cpu *sg_cpu, unsigned long util, > static void sugov_get_util(unsigned long *util, unsigned long *max) > { > struct rq *rq = this_rq(); > - unsigned long cfs_max = rq->cpu_capacity_orig; > + unsigned long cfs_max; > + > + cfs_max = arch_scale_cpu_capacity(NULL, smp_processor_id()); > > *util = min(rq->cfs.avg.util_avg, cfs_max); > *max = cfs_max; > Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Aug 31, 2016 at 03:27:30AM +0200, Rafael J. Wysocki wrote: > On Friday, August 26, 2016 11:40:47 AM Steve Muckle wrote: > > PELT does not consider SMT when scaling its utilization values via > > arch_scale_cpu_capacity(). The value in rq->cpu_capacity_orig does > > take SMT into consideration though and therefore may be smaller than > > the utilization reported by PELT. > > > > On an Intel i7-3630QM for example rq->cpu_capacity_orig is 589 but > > util_avg scales up to 1024. This means that a 50% utilized CPU will show > > up in schedutil as ~86% busy. > > > > Fix this by using the same CPU scaling value in schedutil as that which > > is used by PELT. > > > > Signed-off-by: Steve Muckle <smuckle@linaro.org> > > This is fine by me. > > Peter, any objections? No, looks good. Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, August 31, 2016 04:34:37 PM Peter Zijlstra wrote: > On Wed, Aug 31, 2016 at 03:27:30AM +0200, Rafael J. Wysocki wrote: > > On Friday, August 26, 2016 11:40:47 AM Steve Muckle wrote: > > > PELT does not consider SMT when scaling its utilization values via > > > arch_scale_cpu_capacity(). The value in rq->cpu_capacity_orig does > > > take SMT into consideration though and therefore may be smaller than > > > the utilization reported by PELT. > > > > > > On an Intel i7-3630QM for example rq->cpu_capacity_orig is 589 but > > > util_avg scales up to 1024. This means that a 50% utilized CPU will show > > > up in schedutil as ~86% busy. > > > > > > Fix this by using the same CPU scaling value in schedutil as that which > > > is used by PELT. > > > > > > Signed-off-by: Steve Muckle <smuckle@linaro.org> > > > > This is fine by me. > > > > Peter, any objections? > > No, looks good. Thanks OK, thanks! Applied. -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 60d985f4dc47..cb8a77b1ef1b 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -147,7 +147,9 @@ static unsigned int get_next_freq(struct sugov_cpu *sg_cpu, unsigned long util, static void sugov_get_util(unsigned long *util, unsigned long *max) { struct rq *rq = this_rq(); - unsigned long cfs_max = rq->cpu_capacity_orig; + unsigned long cfs_max; + + cfs_max = arch_scale_cpu_capacity(NULL, smp_processor_id()); *util = min(rq->cfs.avg.util_avg, cfs_max); *max = cfs_max;
PELT does not consider SMT when scaling its utilization values via arch_scale_cpu_capacity(). The value in rq->cpu_capacity_orig does take SMT into consideration though and therefore may be smaller than the utilization reported by PELT. On an Intel i7-3630QM for example rq->cpu_capacity_orig is 589 but util_avg scales up to 1024. This means that a 50% utilized CPU will show up in schedutil as ~86% busy. Fix this by using the same CPU scaling value in schedutil as that which is used by PELT. Signed-off-by: Steve Muckle <smuckle@linaro.org> --- kernel/sched/cpufreq_schedutil.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)