lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 16 Nov 2022 12:00:24 +0100
From:   Vincent Guittot <vincent.guittot@...aro.org>
To:     Honglei Wang <wanghonglei@...iglobal.com>
Cc:     Ingo Molnar <mingo@...hat.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Juri Lelli <juri.lelli@...hat.com>,
        Dietmar Eggemann <dietmar.eggemann@....com>,
        Steven Rostedt <rostedt@...dmis.org>,
        Ben Segall <bsegall@...gle.com>, Mel Gorman <mgorman@...e.de>,
        Daniel Bristot de Oliveira <bristot@...hat.com>,
        Valentin Schneider <vschneid@...hat.com>,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] sched/core: use correct cpu_capacity in wake_affine_weight()

On Wed, 16 Nov 2022 at 10:12, Honglei Wang <wanghonglei@...iglobal.com> wrote:
>
> It seems make more sense to do the load weight calculation with
> respective cpu_capacity.
>
> Signed-off-by: Honglei Wang <wanghonglei@...iglobal.com>
> ---
>  kernel/sched/fair.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index e4a0b8bd941c..a9f75040969b 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -6262,13 +6262,13 @@ wake_affine_weight(struct sched_domain *sd, struct task_struct *p,
>         this_eff_load += task_load;
>         if (sched_feat(WA_BIAS))
>                 this_eff_load *= 100;
> -       this_eff_load *= capacity_of(prev_cpu);
> +       this_eff_load *= capacity_of(this_cpu);
>
>         prev_eff_load = cpu_load(cpu_rq(prev_cpu));
>         prev_eff_load -= task_load;
>         if (sched_feat(WA_BIAS))
>                 prev_eff_load *= 100 + (sd->imbalance_pct - 100) / 2;
> -       prev_eff_load *= capacity_of(this_cpu);
> +       prev_eff_load *= capacity_of(prev_cpu);

we want to test :
    (cpu_load(this_rq) + task_h_load(p) ) / capacity_of(this_cpu)  <
cpu_load(prev_rq) / capacity_of(prev_cpu)

but instead of doing expensive division, we do the below which gives
the same result
    (cpu_load(this_rq) + task_h_load(p) ) * capacity_of(prev_cpu)  <
cpu_load(prev_rq) * capacity_of(this_cpu)


>
>         /*
>          * If sync, adjust the weight of prev_eff_load such that if
> --
> 2.14.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ