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

Reply via email to