Skip to contentSkip to conversation

sched/deadline: reduce rq lock contention by eliminating locking of non-feasible target

PATCH In review Wanpeng Li 1 participant 3 messages Mar 23, 2015 – Apr 7, 2015 Scheduler

lore
Share & tools
lore

Wanpeng Li

author
#0 lore raw

PATCH v2 1/1 sched/deadline: reduce rq lock contention by eliminating locking of non-feasible target

This patch adds checks that prevents futile attempts to move dl tasks to a CPU with active tasks of equal or earlier deadline. The same behavior as commit 80e3d87b2c55 ("sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target") for rt class.

---
v1 -> v2:
* use dl_time_before macro

 kernel/sched/deadline.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
kernel/sched/deadline.c +3 -1
index 19d716e..f48d319 100644
@@ -955,7 +955,9 @@ select_task_rq_dl(struct task_struct *p, int cpu, int sd_flag, int flags)
 	    (p->nr_cpus_allowed > 1)) {
 		int target = find_later_rq(p);
 
-		if (target != -1)
+		if (target != -1 &&
+			dl_time_before(p->dl.deadline,
+				cpu_rq(target)->dl.earliest_dl.curr))
 			cpu = target;
 	}
 	rcu_read_unlock();
Signature · 1 line
1.9.1
author
#1 lore raw

Ping Juri, ;)

Quoted 30 lines · Wanpeng Li

This patch adds checks that prevents futile attempts to move dl tasks to a CPU with active tasks of equal or earlier deadline. The same behavior as commit 80e3d87b2c55 ("sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target") for rt class.

---
v1 -> v2:
* use dl_time_before macro

kernel/sched/deadline.c | 4 +++-

1 file changed, 3 insertions(+), 1 deletion(-)
kernel/sched/deadline.c +3 -1
index 19d716e..f48d319 100644
@@ -955,7 +955,9 @@ select_task_rq_dl(struct task_struct *p, int cpu, int sd_flag, int flags)
 	    (p->nr_cpus_allowed > 1)) {
 		int target = find_later_rq(p);
 
-		if (target != -1)
+		if (target != -1 &&
+			dl_time_before(p->dl.deadline,
+				cpu_rq(target)->dl.earliest_dl.curr))
 			cpu = target;
 	}
 	rcu_read_unlock();
Signature · 1 line
1.9.1
author
#2 lore raw

Ping Peter, this patch is collected into this patchset https://lkml.org/lkml/2015/4/6/44

Quoted 32 lines · Wanpeng Li

Ping Juri, ;)

Quoted 30 lines · Wanpeng Li

This patch adds checks that prevents futile attempts to move dl tasks to a CPU with active tasks of equal or earlier deadline. The same behavior as commit 80e3d87b2c55 ("sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target") for rt class.

---
v1 -> v2:
* use dl_time_before macro

kernel/sched/deadline.c | 4 +++-

1 file changed, 3 insertions(+), 1 deletion(-)
kernel/sched/deadline.c +3 -1
index 19d716e..f48d319 100644
@@ -955,7 +955,9 @@ select_task_rq_dl(struct task_struct *p, int cpu, int sd_flag, int flags)
 	    (p->nr_cpus_allowed > 1)) {
 		int target = find_later_rq(p);
 
-		if (target != -1)
+		if (target != -1 &&
+			dl_time_before(p->dl.deadline,
+				cpu_rq(target)->dl.earliest_dl.curr))
 			cpu = target;
 	}
 	rcu_read_unlock();
Signature · 1 line
1.9.1