On Friday 22 Jun 2018 at 17:22:58 (+0200), Peter Zijlstra wrote: > On Fri, Jun 22, 2018 at 01:37:13PM +0200, Peter Zijlstra wrote: > > That is true.. So we could limit the scaling to the case where there is > > no idle time, something like: > > > > util = sg_cpu->util_cfs; > > > > cap_cfs = (1024 - (sg_cpu->util_rt + ...)); > > if (util == cap_cfs) > > util = sg_cpu->max; > > > > OK, it appears this is more or less what the patches do. And I think > there's a small risk/hole with this where util ~= cap_cfs but very close > due to some unaccounted time.
So Vincent suggested at some point to add a margin to avoid that issue IIRC. FWIW, this is what the overutilized flag of EAS does. It basically says, if there isn't enough idle time in the system (cfs_util is too close to cap_cfs), don't bother looking at the util signals because they'll be kinda wrong. So what about something like, go to max freq if overutilized ? Or something similar on a per cpufreq policy basis ? Thanks, Quentin

