Skip to contentSkip to conversation

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

PATCH RESEND Superseded Wanpeng Li 3 participants 3 messages Oct 11, 2014 – Oct 21, 2014 Scheduler

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Wanpeng Li

author
#0 lore raw

PATCH RESEND v2 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 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
#1 lore raw

Hi,

Quoted 5 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

                                                                 ^
                                                                has
Quoted 2 lines

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

^
implements? aligns to...

Quoted 16 lines

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 +0 -0
index abfaf3d..cf7c9b6 100644

kernel/sched/deadline.c static void switched_to_dl(struct rq *rq, struct task_struct *p) · line 1607

Quoted 6 lines
kernel/sched/deadline.c +2 -1
@@ -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))

I'd personally align this && to p->nr_cpus_allowed, but that's just my personal taste, though. :)

kernel/sched/deadline.c static void switched_to_dl(struct rq *rq, struct task_struct *p) · line 1610

Quoted 4 lines
kernel/sched/deadline.c +0 -0
 			/* Only reschedule if pushing failed */
 			check_resched = 0;
 #endif /* CONFIG_SMP */

Anyway, the change looks good, thanks!

Best,

- Juri

#2 lore raw
Quoted 32 lines · Juri Lelli

Hi,

Quoted 5 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

                                                                  ^
                                                                 has
Quoted 2 lines

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

^
implements? aligns to...

Quoted 17 lines

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 +0 -0
index abfaf3d..cf7c9b6 100644
@@ -1603,7 +1603,8 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
 
Quoted 7 lines

kernel/sched/deadline.c static void switched_to_dl(struct rq *rq, struct task_struct *p) · line 1607

Quoted 5 lines
kernel/sched/deadline.c +2 -1
  	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))

I'd personally align this && to p->nr_cpus_allowed, but that's just my personal taste, though. :)

Ah, ok, I will send out a newer version tomorrow. ;-)

Regards,
Wanpeng Li

Quoted 16 lines

kernel/sched/deadline.c static void switched_to_dl(struct rq *rq, struct task_struct *p) · line 1610

Quoted 5 lines
kernel/sched/deadline.c +0 -0
  			/* Only reschedule if pushing failed */
  			check_resched = 0;
  #endif /* CONFIG_SMP */

Anyway, the change looks good, thanks!

Best,

- Juri

--
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/