Re: sched/rt: Pick up the throttled rt tasks in case no othernon-rt tasks

From: Mike Galbraith
Date: Wed Oct 16 2013 - 02:57:18 EST


On Wed, 2013-10-16 at 23:43 +0800, Chuansheng Liu wrote:
> Meet the case that on CPU2, there are just two tasks to be run,
> one is one rt task A, another is idle task, but at this time,
> and the rt_rq is throttled.
>
> CPU1 CPU2
> staying in idle task;
> waking up rt task A on
> target CPU 2;
>
> exiting from idle task;
> DO schedule()
> pick up RT next task
> pick_next_task_rt()
> _pick_next_task_rt()
> rt_rq is throttled
> return NULL rt task to be picked
>
> CPU2 then went into idle task AGAIN;
> after 2s, CPU2 is waken up again;
> rt task A is get running;
>
> Here rt task A is delayed for some time, even when CPU2 is in idle state.
>
> so in case there are just rt tasks running, we can pick up one of them
> even rt_rq is throttled.

And shortly thereafter, a SCHED_NORMAL task wakes.. only to find that
its alleged bodyguard slit its throat while it slept. Bad bodyguard.

-Mike

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/