Re: [PATCH 10/18 v2] sched/fair: Add force push task mechanism for fair

From: Vincent Guittot

Date: Fri Oct 09 2026 - 11:08:22 EST


On Fri, 9 Oct 2026 at 16:04, Vincent Guittot <vincent.guittot@xxxxxxxxxx> wrote:
>
> On Fri, 9 Oct 2026 at 07:53, Kayra Cizmeci <kayracizmeci@xxxxxxxxx> wrote:
> >
> > > task_tick_cache(rq, curr);
> > >
> > > - update_misfit_status(curr, rq);
> > > - check_update_overutilized_status(task_rq(curr));
> > > + if (!tick_pushable_task(curr, rq, rf)) {
> > > + update_misfit_status(curr, rq);
> > > + check_update_overutilized_status(task_rq(curr));
> > > + }
> > >
> > > task_tick_core(rq, curr);
> > > }
> >
> > Hm.
> >
> > I think this mechanism added on here does not works.
>
> Ah yes, while factorizing the code, I removed this main diff between
> tick and put events

In fact this is on purpose.
fair_check_pushable_task() is the function that is called to decide
wether we try to push or not a task. In the case of short task, we
will not push a task that is already alone on the rq

>
> >
> > Before fair_check_pushable_task() is called, we check
> > if nr_running is bigger than 1. If it is we return false.
> > So when we enter fair_check_pushable_task(), nr_running is
> > equal or smaller than 1. We first run __check_pushable_fair_task()
> > but it doesn't really matters, since it's output
> > can only return false. Next block is skipped to since
> > next == NULL. When we're at the check_pushable_short_task(),
> > the h_nr_runnable check is always true on this path,
> > so we return false.
> >
> > It this intentional? Or am I missing something?
> >
> > Thanks,
> > Kayra
> >