Re: [PATCH v4] sched,fair: Skip newidle_balance if a wakeup is pending

From: Peter Zijlstra
Date: Tue May 04 2021 - 05:22:18 EST


On Thu, Apr 22, 2021 at 07:09:46PM +0200, Vincent Guittot wrote:
> On Thu, 22 Apr 2021 at 19:02, Rik van Riel <riel@xxxxxxxxxxx> wrote:
> >
> > The try_to_wake_up function has an optimization where it can queue
> > a task for wakeup on its previous CPU, if the task is still in the
> > middle of going to sleep inside schedule().
> >
> > Once schedule() re-enables IRQs, the task will be woken up with an
> > IPI, and placed back on the runqueue.
> >
> > If we have such a wakeup pending, there is no need to search other
> > CPUs for runnable tasks. Just skip (or bail out early from) newidle
> > balancing, and run the just woken up task.
> >
> > For a memcache like workload test, this reduces total CPU use by
> > about 2%, proportionally split between user and system time,
> > and p99 and p95 application response time by 10% on average.
> > The schedstats run_delay number shows a similar improvement.
> >
> > Signed-off-by: Rik van Riel <riel@xxxxxxxxxxx>
>
> Reviewed-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>

Thanks!