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: Fri, 19 Apr 2024 17:20:19 +0800
From: Xuewen Yan <xuewen.yan94@...il.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Chen Yu <yu.c.chen@...el.com>, Abel Wu <wuyun.abel@...edance.com>, 
	Ingo Molnar <mingo@...hat.com>, Vincent Guittot <vincent.guittot@...aro.org>, 
	Juri Lelli <juri.lelli@...hat.com>, Tim Chen <tim.c.chen@...el.com>, 
	Tiwei Bie <tiwei.btw@...group.com>, Honglei Wang <wanghonglei@...ichuxing.com>, 
	Aaron Lu <aaron.lu@...el.com>, Chen Yu <yu.chen.surf@...il.com>, 
	Yujie Liu <yujie.liu@...el.com>, linux-kernel@...r.kernel.org, 
	kernel test robot <oliver.sang@...el.com>, Tianchen Ding <dtcccc@...ux.alibaba.com>
Subject: Re: [RFC PATCH] sched/eevdf: Return leftmost entity in pick_eevdf()
 if no eligible entity is found

On Fri, Apr 19, 2024 at 4:45 PM Peter Zijlstra <peterz@...radead.org> wrote:
>
> On Fri, Apr 19, 2024 at 10:24:40AM +0200, Peter Zijlstra wrote:
> > On Thu, Apr 18, 2024 at 09:03:36PM +0800, Chen Yu wrote:
> >
> > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> > > index 31bca05c3612..9f203012e8f5 100644
> > > --- a/kernel/sched/fair.c
> > > +++ b/kernel/sched/fair.c
> > > @@ -696,15 +696,23 @@ u64 avg_vruntime(struct cfs_rq *cfs_rq)
> > >   *
> > >   * XXX could add max_slice to the augmented data to track this.
> > >   */
> > > +
> > > +static s64 limit_entity_lag(struct sched_entity *se, s64 lag)
> > > +{
> > > +   s64 limit;
> > > +
> > > +   limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se);
> > > +   return clamp(lag, -limit, limit);
> > > +}
> >
> > Right, helper makes sense.
>
> A possible other helper might be the below. But that depends if we want
> to clip after scaling too. No super strong preference.
>
> Please post your patch with a proper changelog and we'll get it sorted.

Thanks Peter, I will send the v2 later after my local testing:)


>
>
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -696,15 +696,19 @@ u64 avg_vruntime(struct cfs_rq *cfs_rq)
>   *
>   * XXX could add max_slice to the augmented data to track this.
>   */
> -static void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se)
> +static s64 entity_lag(u64 avruntime, struct sched_entity *se)
>  {
> -       s64 lag, limit;
> -
> -       SCHED_WARN_ON(!se->on_rq);
> -       lag = avg_vruntime(cfs_rq) - se->vruntime;
> +       s64 vlag, limit;
>
> +       vlag = avruntime - se->vruntime;
>         limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se);
> -       se->vlag = clamp(lag, -limit, limit);
> +       return clamp(vlag, -limit, limit);
> +}
> +
> +static void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se)
> +{
> +       SCHED_WARN_ON(!se->on_rq);
> +       se->vlag = entity_lag(avg_vruntime(cfs_rq), se);
>  }
>
>  /*
> @@ -3760,7 +3764,7 @@ static void reweight_eevdf(struct sched_
>          *         = V  - vl'
>          */
>         if (avruntime != se->vruntime) {
> -               vlag = (s64)(avruntime - se->vruntime);
> +               vlag = entity_lag(avruntime, se);
>                 vlag = div_s64(vlag * old_weight, weight);
>                 se->vruntime = avruntime - vlag;
>         }

BR
---
xuewen

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ