On Fri, Dec 22, 2017 at 12:46:18PM +0100, Peter Zijlstra wrote: > Blergh that'd make a mess of things again.
Something like so then.. --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -187,11 +187,16 @@ static void sugov_get_util(struct sugov_ static unsigned long sugov_aggregate_util(struct sugov_cpu *sg_cpu) { - unsigned long util = sg_cpu->util_cfs + sg_cpu->util_dl; struct rq *rq = cpu_rq(sg_cpu->cpu); + unsigned long util; - if (rq->rt.rt_nr_running) + if (rq->rt.rt_nr_running) { util = sg_cpu->max; + } else { + util = sg_cpu->util_dl; + if (rq->cfs.h_nr_running) + util += sg_cpu->util_cfs; + } /* * Ideally we would like to set util_dl as min/guaranteed freq and