• [PATCH v2 2/2] cpufreq: schedutil: consolidate capacity margin calc

    From Leo Yan@21:1/5 to Joel Fernandes on Mon Oct 2 13:20:02 2017
    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@linaro.org> 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@arm.com>
    Cc: Morten Rasmussen <morten.rasmussen@arm.com>
    Cc: Chris Redpath <Chris.Redpath@arm.com>
    Cc: Joel Fernandes <joelaf@google.com>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Patrick Bellasi <patrick.bellasi@arm.com>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    ---
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)