sched/rt: Simplify pick_rt_task: remove next_prio() inheritance
PATCH 1/1 sched/rt: Simplify pick_rt_task: remove next_prio() inheritance
Function next_prio() has been removed and pull_rt_task() is the only user of pick_next_highest_task_rt() at the moment.
pull_rt_task is not interested in p->nr_cpus_allowed, its only interest is the fact that cpu is allowed to execute p. If nr_cpus_allowed == 1, cpu != task_cpu(p) and cpu is allowed then it means that task p is in the middle of the migration techniques; the task waits until it is moved by migration thread. So, lets pull it earlier.
--- kernel/sched/rt.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
kernel/sched/rt.c +1 -2
@@ -1427,8 +1427,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p)static int pick_rt_task (struct rq *rq,struct task_struct *p,int cpu) {if (!task_running (rq, p) && - (cpu <0 ||cpumask_test_cpu (cpu,tsk_cpus_allowed (p))) && - (p->nr_cpus_allowed >1 )) +cpumask_test_cpu (cpu,tsk_cpus_allowed (p)))return 1 ;return 0 ; }
Quoted 10 lines · Kirill Tkhai
Function
next_prio()has been removed andpull_rt_task()is the only user ofpick_next_highest_task_rt()at the moment.
pull_rt_taskis not interested inp->nr_cpus_allowed, its only interest is the fact that cpu is allowed to execute p. Ifnr_cpus_allowed== 1, cpu !=task_cpu(p)and cpu is allowed then it means that task p is in the middle of the migration techniques; the task waits until it is moved by migration thread. So, lets pull it earlier.Signed-off-by Kirill V Tkhai <[email protected]>
-- Steve
Quoted 20 lines
CC Ingo Molnar <[email protected]>CC Peter Zijlstra <[email protected]>CC linux-rt-users <[email protected]>--- kernel/sched/rt.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)kernel/sched/rt.c +1
-2@@ -1427,8 +1427,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p)static int pick_rt_task (struct rq *rq,struct task_struct *p,int cpu) {if (!task_running (rq, p) && - (cpu <0 ||cpumask_test_cpu (cpu,tsk_cpus_allowed (p))) && - (p->nr_cpus_allowed >1 )) +cpumask_test_cpu (cpu,tsk_cpus_allowed (p)))return 1 ;return 0 ; }
[tip:sched/core] sched/rt: Further simplify pick_rt_task()
In reply to Kirill TkhaiCommit-ID: 60334caf37dc7c59120b21faa625534a6fffead0 Gitweb: http://git.kernel.org/tip/60334caf37dc7c59120b21faa625534a6fffead0 Author: Kirill Tkhai <[email protected]> AuthorDate: Thu, 31 Jan 2013 18:56:17 +0400 Committer: Ingo Molnar <[email protected]> CommitDate: Sun, 3 Feb 2013 19:54:58 +0100
sched/rt: Further simplify pick_rt_task()
Function next_prio() has been removed and pull_rt_task() is the only user of pick_next_highest_task_rt() at the moment.
pull_rt_task is not interested in p->nr_cpus_allowed, its only interest is the fact that cpu is allowed to execute p. If nr_cpus_allowed == 1, cpu != task_cpu(p) and cpu is allowed then it means that task p is in the middle of the migration techniques; the task waits until it is moved by migration thread. So, lets pull it earlier.
--- kernel/sched/rt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
kernel/sched/rt.c +1 -2
@@ -1427,8 +1427,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p)static int pick_rt_task (struct rq *rq,struct task_struct *p,int cpu) {if (!task_running (rq, p) && - (cpu <0 ||cpumask_test_cpu (cpu,tsk_cpus_allowed (p))) && - (p->nr_cpus_allowed >1 )) +cpumask_test_cpu (cpu,tsk_cpus_allowed (p)))return 1 ;return 0 ; }