Re: [PATCH 1/2] sched/fair: Couple wakee flips with heavy wakers

From: Mike Galbraith
Date: Tue Nov 09 2021 - 07:56:09 EST


On Tue, 2021-11-09 at 12:56 +0100, Peter Zijlstra wrote:
>
>
> > @@ -5895,7 +5903,7 @@ static int wake_wide(struct task_struct *p)
> >  
> >         if (master < slave)
> >                 swap(master, slave);
> > -       if (slave < factor || master < slave * factor)
> > +       if ((slave < factor && master < (factor>>1)*factor) || master < slave * factor)
> >                 return 0;
> >         return 1;
> >  }
>
> has factor.
>
> Now:
>
>         !(slave < factor || master < slave * factor)
>
>   !(x || y) == !x && !y, gives:
>
>         slave >= factor && master >= slave * factor
>
>   subst lhr in rhs:
>
>         master >= factor * factor
>
>
> your extra term:
>
>         !((slave < factor && master < (factor*factor)/2) || master < slave * factor)
>
> changes that how? AFAICT it's a nop.

That can happen when twiddling. The thought was to let volume on the
right override individual thread decay on the left to a limited extent.

-Mike