Re:[PATCH]sched/rt: Do not try to push tasks if pinned task switches to RT
From: Kirill Tkhai <hidden>
Date: 2013-01-29 09:30:17
Also in:
lkml
From: Libo Chen <redacted> On 2013-1-29 4:23, Kirill Tkhai wrote:quoted
Just switched pinned task is not able to be pushed. If the rq had had several RT tasks before they have already been considered as candidates to be pushed (or pulled). Signed-off-by: Kirill V Tkhai <redacted> CC: Steven Rostedt <rostedt@goodmis.org> CC: Ingo Molnar <mingo@kernel.org> CC: Peter Zijlstra <peterz@infradead.org> CC: linux-rt-users <redacted> --- kernel/sched/rt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 4e8f0f4..5f7d92b 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c@@ -1925,9 +1925,9 @@ static void switched_to_rt(struct rq *rq, struct task_struct *p)*/ if (p->on_rq && rq->curr != p) { #ifdef CONFIG_SMP - if (rq->rt.overloaded && push_rt_task(rq) && + if (rq->rt.overloaded && p->nr_cpus_allowed > 1 && /* Don't resched if we changed runqueues */ - rq != task_rq(p)) + push_rt_task(rq) && rq != task_rq(p))I think you worry about it was excess to call push_rt_task, since the task of p->nr_cpus_allowed=1 can`t be pushed. is that right?
Sure.
The task of p->nr_cpus_allowed =1 would`t be added to pushable_tasks list (see the enqueue_task_rt())and this push_rt_task() need to push other tasks when rt.overloaded.
If rq has already had 2 or more pushable tasks and we try to add a pinned task then call of push_rt_task will just waste a time.
So I don`t agree this patch.quoted
check_resched = 0; #endif /* CONFIG_SMP */ if (check_resched && p->prio < rq->curr->prio) -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--