[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180622125433.GA26461@e108498-lin.cambridge.arm.com>
Date: Fri, 22 Jun 2018 13:54:34 +0100
From: Quentin Perret <quentin.perret@....com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Vincent Guittot <vincent.guittot@...aro.org>, mingo@...nel.org,
linux-kernel@...r.kernel.org, rjw@...ysocki.net,
juri.lelli@...hat.com, dietmar.eggemann@....com,
Morten.Rasmussen@....com, viresh.kumar@...aro.org,
valentin.schneider@....com, patrick.bellasi@....com,
joel@...lfernandes.org, daniel.lezcano@...aro.org,
Ingo Molnar <mingo@...hat.com>
Subject: Re: [PATCH v6 04/11] cpufreq/schedutil: use rt utilization tracking
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
Powered by blists - more mailing lists