Re: [PATCH] sched/fair : prevent unlimited runtime on throttled group

From: Peter Zijlstra
Date: Mon Jan 20 2020 - 04:46:39 EST


On Tue, Jan 14, 2020 at 10:29:43AM -0800, bsegall@xxxxxxxxxx wrote:
> Vincent Guittot <vincent.guittot@xxxxxxxxxx> writes:
>
> > When a running task is moved on a throttled task group and there is no
> > other task enqueued on the CPU, the task can keep running using 100% CPU
> > whatever the allocated bandwidth for the group and although its cfs rq is
> > throttled. Furthermore, the group entity of the cfs_rq and its parents are
> > not enqueued but only set as curr on their respective cfs_rqs.
> >
> > We have the following sequence:
> >
> > sched_move_task
> > -dequeue_task: dequeue task and group_entities.
> > -put_prev_task: put task and group entities.
> > -sched_change_group: move task to new group.
> > -enqueue_task: enqueue only task but not group entities because cfs_rq is
> > throttled.
> > -set_next_task : set task and group_entities as current sched_entity of
> > their cfs_rq.
> >
> > Another impact is that the root cfs_rq runnable_load_avg at root rq stays
> > null because the group_entities are not enqueued. This situation will stay
> > the same until an "external" event triggers a reschedule. Let trigger it
> > immediately instead.
>
> Sounds reasonable to me, "moved group" being an explicit resched check
> doesn't sound like a problem in general.

Do I read that as an Ack from you Ben? :-)