Skip to contentSkip to conversation

sched/rt: Simplify pick_rt_task: remove next_prio() inheritance

PATCH In review Kirill Tkhai 2 participants 3 messages Jan 31, 2013 – Feb 3, 2013 Scheduler

lore
Share & tools
lore
#0 lore raw

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.

CC Steven Rostedt <[email protected]>
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
index 4e8f0f4..9aa2921 100644
@@ -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;
 }
reviewer Acked-by on v1 1/1
#1 lore raw
Quoted 10 lines · Kirill Tkhai

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.

-- 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
index 4e8f0f4..9aa2921 100644
@@ -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;
 }
#2 lore raw

[tip:sched/core] sched/rt: Further simplify pick_rt_task()

In reply to Kirill Tkhai
Commit-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
index 94abca4..c25de14 100644
@@ -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;
 }