On Friday 22 Jun 2018 at 13:37:13 (+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; > > That specifically handles the '0% idle -> 100% freq' case, but I don't > realy like edge behaviour like that. If for some reason it all doesn't > quite align you're left with bits. > > And the linear scaling is the next simplest thing that avoids the hard > boundary case.
Right, so maybe we'll get something smoother by just summing the signals as Vincent is proposing ? You will still request max freq for the (util == cap_cfs) case you described. By definition, you will have (util_cfs + util_rt + ...) == 1024 in this case. cap_cfs is the delta between RT+DL+... and 1024, and the only case where util_cfs can be equal to cap_cfs is if util_cfs fills that delta entirely. I hope that makes sense Thanks, Quentin

