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

From: bsegall
Date: Tue Jan 21 2020 - 13:26:50 EST


Peter Zijlstra <peterz@xxxxxxxxxxxxx> writes:

> 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? :-)

Yeah,

Acked-by: Ben Segall <bsegall@xxxxxxxxxx>

The only question I see is if we care about avoiding the overhead for
non-cfsb cases, but cgroup attach is already slow enough that it's
probably not a real problem, and it's reasonable to check if it's still
right to run this task in general.