[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAKfTPtCBGU+PiXh0MX2zUOwaBA+PgtCAZxrwZQpPywCde=Z3NQ@mail.gmail.com>
Date: Mon, 9 Feb 2026 14:20:21 +0100
From: Vincent Guittot <vincent.guittot@...aro.org>
To: Qais Yousef <qyousef@...alina.io>
Cc: mingo@...hat.com, peterz@...radead.org, juri.lelli@...hat.com,
dietmar.eggemann@....com, rostedt@...dmis.org, bsegall@...gle.com,
mgorman@...e.de, vschneid@...hat.com, linux-kernel@...r.kernel.org,
pierre.gondois@....com, kprateek.nayak@....com, hongyan.xia2@....com,
christian.loehle@....com, luis.machado@....com
Subject: Re: [PATCH 0/6 v8] sched/fair: Add push task mechanism and handle
more EAS cases
On Fri, 6 Feb 2026 at 19:32, Qais Yousef <qyousef@...alina.io> wrote:
>
> On 12/02/25 19:12, Vincent Guittot wrote:
> > This is a subset of [1] (sched/fair: Rework EAS to handle more cases)
> >
> > [1] https://lore.kernel.org/all/20250314163614.1356125-1-vincent.guittot@linaro.org/
> >
> > The current Energy Aware Scheduler has some known limitations which have
> > became more and more visible with features like uclamp as an example. This
> > serie tries to fix some of those issues:
> > - tasks stacked on the same CPU of a PD
> > - tasks stuck on the wrong CPU.
>
> I think you are under selling the importance of this improvement :-)
>
> FWIW, in my view the new mechanism will help us:
>
> 1. Improve slow reaction time of lb. Waiting for another CPU to pull is very
> slow. And with 4ms TICK being the default and what I believe should be
> demolished (for most systems) back off mechanisms, when lb kicks in things
> has gone really bad already.
> 2. It helps implement misfit based on energy I brought up in the past [1]
> 3. It brings up a step closer to unify wake up and load balancer paths as we
> discussed is necessary to get a decent sched qos. We need to add the concept
> of task placement based on latency, and if lb can't take similar decision it
> is hard to make this useful. With push lb, both path can easily follow up
> the same decision tree.
>
> I have backported an earlier version of this to help verify it, but so far
> I think it is an amazing addition. Thanks for this!
Thanks
>
> [1] https://lore.kernel.org/lkml/20231209011759.398021-1-qyousef@layalina.io/
>
> >
> > Patch 1 fixes the case where a CPU is wrongly classified as overloaded
> > whereas it is capped to a lower compute capacity. This wrong classification
> > can prevent periodic load balancer to select a group_misfit_task CPU
> > because group_overloaded has higher priority.
> >
> > Patch 2 removes the need of testing uclamp_min in cpu_overutilized to
> > trigger the active migration of a task on another CPU.
> >
> > Patch 3 prepares select_task_rq_fair() to be called without TTWU, Fork or
> > Exec flags when we just want to look for a possible better CPU.
> >
> > Patch 4 adds push call back mecanism to fair scheduler but doesn't enable
> > it.
> >
> > Patch 5 enable has_idle_core for !SMP system to track if there may be an
> > idle CPU in the LLC.
> >
> > Patch 6 adds some conditions to enable pushing runnable tasks for EAS:
> > - when a task is stuck on a CPU and the system is not overutilized.
> > - if there is a possible idle CPU when the system is overutilized.
> >
> > More tests results will come later as I wanted to send the pachtset before
> > LPC.
> >
> > I have kept Tbench figures as I added them in v7 but results are the same
> > with the correct patch 6.
> >
> > Tbench on dragonboard rb5
> > schedutil and EAS enabled
> >
> > # process tip +patchset
> > 1 29.3(+/-0.3%) 29.2(+/-0.2%) +0%
> > 2 61.1(+/-1.8%) 61.7(+/-3.2%) +1%
> > 4 260.0(+/-1.7%) 258.8(+/-2.8%) -1%
> > 8 1361.2(+/-3.1%) 1377.1(+/-1.9%) +1%
> > 16 981.5(+/-0.6%) 958.0(+/-1.7%) -2%
> >
> > Hackbench didn't show any difference
> >
> > Changes since v7:
> > - Rebased on latest tip/sched/core
> > - Fix some typos
> > - Fix patch 6 mess
> >
> > Vincent Guittot (6):
> > sched/fair: Filter false overloaded_group case for EAS
> > sched/fair: Update overutilized detection
> > sched/fair: Prepare select_task_rq_fair() to be called for new cases
> > sched/fair: Add push task mechanism for fair
> > sched/fair: Enable idle core tracking for !SMT
> > sched/fair: Add EAS and idle cpu push trigger
> >
> > kernel/sched/fair.c | 350 +++++++++++++++++++++++++++++++++++-----
> > kernel/sched/sched.h | 46 ++++--
> > kernel/sched/topology.c | 2 +
> > 3 files changed, 345 insertions(+), 53 deletions(-)
> >
> > --
> > 2.43.0
> >
Powered by blists - more mailing lists