Re: [PATCH v4] sched/fair: Correctly insert cfs_rq's to list on unthrottle

From: Vincent Guittot
Date: Thu Jun 10 2021 - 02:50:55 EST


On Tue, 8 Jun 2021 at 18:39, Michal Koutný <mkoutny@xxxxxxxx> wrote:
>
> Hello.
>
> On Fri, Jun 04, 2021 at 12:23:14PM +0200, Odin Ugedal <odin@xxxxxxx> wrote:
>
> > @@ -4719,8 +4738,8 @@ static int tg_unthrottle_up(struct task_group *tg, void *data)
> > cfs_rq->throttled_clock_task_time += rq_clock_task(rq) -
> > cfs_rq->throttled_clock_task;
> >
> > - /* Add cfs_rq with already running entity in the list */
> > - if (cfs_rq->nr_running >= 1)
> > + /* Add cfs_rq with load or one or more already running entities to the list */
> > + if (!cfs_rq_is_decayed(cfs_rq) || cfs_rq->nr_running)
> > list_add_leaf_cfs_rq(cfs_rq);
> > }
>
> Can there be a decayed cfs_rq with positive nr_running?
> I.e. can the condition be simplified to just the decayed check?

Yes, nothing prevent a task with a null load to be enqueued on a
throttle cfs as an example

>
> (I'm looking at account_entity_enqueue() but I don't know if an entity's
> weight can be zero in some singular cases.)
>
> Thanks,
> Michal