# Re: [PATCH v2 2/2] cpufreq: schedutil: consolidate capacity margin calculation

**From: **Leo Yan

**Date: ** Mon Oct 02 2017 - 07:14:03 EST

Hi Joel,

On Sun, Oct 01, 2017 at 06:02:24PM -0700, Joel Fernandes wrote:

>* Hi Leo,*

>* *

>* On Sun, Oct 1, 2017 at 5:30 PM, Leo Yan <leo.yan@xxxxxxxxxx> wrote:*

>* > Scheduler CFS class has variable 'capacity_margin' to calculate the*

>* *

>* s/calculate/represent/ ?*

>* *

>* > capacity margin, and schedutil governor also needs to compensate the*

>* > same margin for frequency tipping point. Below are formulas used in*

>* > CFS class and schedutil governor separately:*

>* >*

>* > CFS: U` = U * capacity_margin / 1024 = U * 1.25*

>* *

>* You should mention in the commit message, at the moment*

>* capacity_margin is 1280 which makes U` = 1.25.*

>* *

>* > Schedutil: U` = U + U >> 2 = U + U * 0.25 = U * 1.25*

>* >*

>* > This patch consolidates the capacity margin calculation so let*

>* > schedutil to use same formula with CFS class. As result this can avoid*

>* *

>* As a result.*

>* *

>* > the mismatch issue between schedutil and CFS class after change*

>* > 'capacity_margin' to other values.*

>* *

>* This didn't make sense to me. May be you meant:*

>* *

>* This patch consolidates the usage of the capacity margin value and*

>* lets schedutil use the same formula as the CFS class. Thus we can*

>* avoid the mismatch between schedutil and CFS class if*

>* 'capacity_margin' is changed to other values in the future.*

Yeah, thanks for the suggestion. And accept all upper comment.

Will refine for new patch.

Thanks,

Leo Yan

>* > Cc: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>*

>* > Cc: Morten Rasmussen <morten.rasmussen@xxxxxxx>*

>* > Cc: Chris Redpath <Chris.Redpath@xxxxxxx>*

>* > Cc: Joel Fernandes <joelaf@xxxxxxxxxx>*

>* > Cc: Vincent Guittot <vincent.guittot@xxxxxxxxxx>*

>* > Cc: Patrick Bellasi <patrick.bellasi@xxxxxxx>*

>* > Cc: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>*

>* > Signed-off-by: Leo Yan <leo.yan@xxxxxxxxxx>*

>* > ---*

>* > kernel/sched/cpufreq_schedutil.c | 6 ++++--*

>* > kernel/sched/sched.h | 1 +*

>* > 2 files changed, 5 insertions(+), 2 deletions(-)*

>* >*

>* > diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c*

>* > index 9209d83..13cc243 100644*

>* > --- a/kernel/sched/cpufreq_schedutil.c*

>* > +++ b/kernel/sched/cpufreq_schedutil.c*

>* > @@ -155,7 +155,8 @@ static void sugov_update_commit(struct sugov_policy *sg_policy, u64 time,*

>* > **

>* > * next_freq = C * curr_freq * util_raw / max*

>* > **

>* > - * Take C = 1.25 for the frequency tipping point at (util / max) = 0.8.*

>* > + * Take C = capacity_margin / 1024 = 1.25, so it's for the frequency tipping*

>* > + * point at (util / max) = 0.8.*

>* *

>* The above comment assumes capacity_margin is 1280. If for any reason*

>* the capacity_margin is changed to something else, then the comment*

>* wont make sense anymore.*

>* *

>* thanks,*

>* *

>* - Joel*