sched: rt-group: deal with PI
Steven mentioned the fun case where a lock holding task will be throttled. Simple fix: allow groups that have boosted tasks to run anyway. If a runnable task in a throttled group gets boosted the dequeue/enqueue done by rt_mutex_setprio() is enough to unthrottle the group. This is ofcourse not quite correct. Two possible ways forward are: - second prio array for boosted tasks - boost to a prio ceiling (this would also work for deadline scheduling) Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
4cf5d77a6e
commit
23b0fdfc92
@@ -362,6 +362,8 @@ struct rt_rq {
|
||||
u64 rt_time;
|
||||
|
||||
#ifdef CONFIG_FAIR_GROUP_SCHED
|
||||
unsigned long rt_nr_boosted;
|
||||
|
||||
struct rq *rq;
|
||||
struct list_head leaf_rt_rq_list;
|
||||
struct task_group *tg;
|
||||
@@ -7112,6 +7114,7 @@ static void init_rt_rq(struct rt_rq *rt_rq, struct rq *rq)
|
||||
rt_rq->rt_throttled = 0;
|
||||
|
||||
#ifdef CONFIG_FAIR_GROUP_SCHED
|
||||
rt_rq->rt_nr_boosted = 0;
|
||||
rt_rq->rq = rq;
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user