Skip to contentSkip to conversation

sched/deadline: do not try to push tasks if pinned task switches to dl

PATCH Superseded Wanpeng Li 4 participants 6 messages Oct 10, 2014 – Oct 20, 2014 Scheduler

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Wanpeng Li

author
#0 lore raw

PATCH 1/1 sched/deadline: do not try to push tasks if pinned task switches to dl

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch does the same behavior as rt class which introduced by commit 104479 (sched/rt: Do not try to push tasks if pinned task switches to RT).

---
 kernel/sched/deadline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
kernel/sched/deadline.c +2 -1
index abfaf3d..cf7c9b6 100644
@@ -1603,7 +1603,8 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
 
 	if (task_on_rq_queued(p) && rq->curr != p) {
 #ifdef CONFIG_SMP
-		if (rq->dl.overloaded && push_dl_task(rq) && rq != task_rq(p))
+		if (p->nr_cpus_allowed > 1 && rq->dl.overloaded
+				&& push_dl_task(rq) && rq != task_rq(p))
 			/* Only reschedule if pushing failed */
 			check_resched = 0;
 #endif /* CONFIG_SMP */
Signature · 1 line
1.9.1
maintainer
#1 lore raw
Quoted 9 lines · Wanpeng Li

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch does the same behavior as rt class which introduced by commit 104479 (sched/rt: Do not try to push tasks if pinned task switches to RT).

Checkpatch rightly complains:

ERROR: Please use 12 or more chars for the git commit ID like: 'commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT")' #12:
which introduced by commit 104479 (sched/rt: Do not try to push tasks

#2 lore raw
Quoted 10 lines · Peter Zijlstra
Quoted 9 lines · Wanpeng Li

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch does the same behavior as rt class which introduced by commit 104479 (sched/rt: Do not try to push tasks if pinned task switches to RT).

Quoted 5 lines

Checkpatch rightly complains:

ERROR: Please use 12 or more chars for the git commit ID like: 'commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT")' #12:
which introduced by commit 104479 (sched/rt: Do not try to push tasks

I also got this warning before send out the patch, however, I check 6 chars is enough for this commit. Anyway, I will send a newer version later.

Regards,
Wanpeng Li

Quoted 7 lines

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

maintainer
#3 lore raw
Quoted 12 lines · Wanpeng Li
Quoted 10 lines · Peter Zijlstra
Quoted 9 lines · Wanpeng Li

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch does the same behavior as rt class which introduced by commit 104479 (sched/rt: Do not try to push tasks if pinned task switches to RT).

Quoted 8 lines
Quoted 5 lines

Checkpatch rightly complains:

ERROR: Please use 12 or more chars for the git commit ID like: 'commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT")' #12:
which introduced by commit 104479 (sched/rt: Do not try to push tasks

I also got this warning before send out the patch, however, I check 6 chars is enough for this commit. Anyway, I will send a newer version later.

It is currently, it might not be in the future. I've already had hash collisions with 8 char hashes. And the fact thats it in the changelog means it can (and therefore) will be referenced at some point in the future. If by that point there is a collision...

#4 lore raw
Quoted 17 lines · Peter Zijlstra
Quoted 16 lines · Wanpeng Li
Quoted 15 lines · Peter Zijlstra
Quoted 9 lines · Wanpeng Li

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch does the same behavior as rt class which introduced by commit 104479 (sched/rt: Do not try to push tasks if pinned task switches to RT).

Checkpatch rightly complains:

ERROR: Please use 12 or more chars for the git commit ID like: 'commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT")' #12:
which introduced by commit 104479 (sched/rt: Do not try to push tasks

Quoted 6 lines
Quoted 2 lines

I also got this warning before send out the patch, however, I check 6 chars is enough for this commit. Anyway, I will send a newer version later.

It is currently, it might not be in the future. I've already had hash collisions with 8 char hashes. And the fact thats it in the changelog means it can (and therefore) will be referenced at some point in the future. If by that point there is a collision...

Got it, thanks for your pointing out.

Regards,
Wanpeng Li

From 247460238414744119265d6aa92f4bf006b060aa Mon Sep 17 00:00:00 2001
From: Wanpeng Li <[email protected]>
Date: Fri, 10 Oct 2014 10:09:37 +0800
Subject: [PATCH v2] sched/deadline: do not try to push tasks if pinned task switches to dl

As Kirill mentioned(https://lkml.org/lkml/2013/1/29/118):
| 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.

Just switched pinned task is not able to be pushed. If the rq had had several dl tasks before they have already been considered as candidates to be pushed (or pulled). This patch done the same behavior as rt class which introduced by commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT").

---
v1 -> v2:
* use 12 or more chars for the git commit ID

 kernel/sched/deadline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
kernel/sched/deadline.c +2 -1
index abfaf3d..cf7c9b6 100644
@@ -1603,7 +1603,8 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
 
 	if (task_on_rq_queued(p) && rq->curr != p) {
 #ifdef CONFIG_SMP
-		if (rq->dl.overloaded && push_dl_task(rq) && rq != task_rq(p))
+		if (p->nr_cpus_allowed > 1 && rq->dl.overloaded
+				&& push_dl_task(rq) && rq != task_rq(p))
 			/* Only reschedule if pushing failed */
 			check_resched = 0;
 #endif /* CONFIG_SMP */
Signature · 1 line
1.9.1
#5 lore raw
In reply to Wanpeng Li
Quoted 6 lines · On Fri, 10 Oct 2014 18:26:42 +0800 Wanpeng Li <[email protected]> wrote:
Quoted 3 lines

ERROR: Please use 12 or more chars for the git commit ID like: 'commit 10447917551e ("sched/rt: Do not try to push tasks if pinned task switches to RT")' #12:
which introduced by commit 104479 (sched/rt: Do not try to push tasks

I also got this warning before send out the patch, however, I check 6 chars is enough for this commit. Anyway, I will send a newer version later.

6 chars may be enough today, but there's no guarantee that it will be enough tomorrow, when someone reads this changelog years from now.

-- Steve