linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl
@ 2014-10-22  0:36 Wanpeng Li
  2014-10-22  9:33 ` Juri Lelli
  2014-10-28 11:06 ` [tip:sched/core] sched/deadline: Do " tip-bot for Wanpeng Li
  0 siblings, 2 replies; 6+ messages in thread
From: Wanpeng Li @ 2014-10-22  0:36 UTC (permalink / raw)
  To: Ingo Molnar, Peter Zijlstra
  Cc: Juri Lelli, Kirill V Tkhai, Steven Rostedt, linux-kernel, 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 has had
several dl tasks before they have already been considered as candidates
to be pushed (or pulled). This patch implements 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"). 

Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
v2 -> v3:
 * cleanup patch description
 * align && to p->nr_cpus_allowed
v1 -> v2:
 * use 12 or more chars for the git commit ID

 kernel/sched/deadline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index abfaf3d..bd5e479 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -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 */
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl
  2014-10-22  0:36 [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl Wanpeng Li
@ 2014-10-22  9:33 ` Juri Lelli
  2016-03-29 22:47   ` Steven Rostedt
  2014-10-28 11:06 ` [tip:sched/core] sched/deadline: Do " tip-bot for Wanpeng Li
  1 sibling, 1 reply; 6+ messages in thread
From: Juri Lelli @ 2014-10-22  9:33 UTC (permalink / raw)
  To: Wanpeng Li, Ingo Molnar, Peter Zijlstra
  Cc: Kirill V Tkhai, Steven Rostedt, linux-kernel

On 22/10/14 01:36, Wanpeng Li wrote:
> 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 has had
> several dl tasks before they have already been considered as candidates
> to be pushed (or pulled). This patch implements 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"). 
> 
> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
> ---
> v2 -> v3:
>  * cleanup patch description
>  * align && to p->nr_cpus_allowed
> v1 -> v2:
>  * use 12 or more chars for the git commit ID
> 
>  kernel/sched/deadline.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> index abfaf3d..bd5e479 100644
> --- a/kernel/sched/deadline.c
> +++ b/kernel/sched/deadline.c
> @@ -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 */
> 

Looks good. Thanks!

Best,

- Juri


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip:sched/core] sched/deadline: Do not try to push tasks if pinned task switches to dl
  2014-10-22  0:36 [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl Wanpeng Li
  2014-10-22  9:33 ` Juri Lelli
@ 2014-10-28 11:06 ` tip-bot for Wanpeng Li
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot for Wanpeng Li @ 2014-10-28 11:06 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: hpa, rostedt, linux-kernel, tkhai, wanpeng.li, tglx, peterz,
	juri.lelli, mingo, torvalds

Commit-ID:  d9aade7ae1d283097a3f626790e7c325a5c69007
Gitweb:     http://git.kernel.org/tip/d9aade7ae1d283097a3f626790e7c325a5c69007
Author:     Wanpeng Li <wanpeng.li@linux.intel.com>
AuthorDate: Wed, 22 Oct 2014 08:36:43 +0800
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 28 Oct 2014 10:47:57 +0100

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 has had
several dl tasks before they have already been considered as candidates
to be pushed (or pulled). This patch implements 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").

Suggested-by: Kirill V Tkhai <tkhai@yandex.ru>
Acked-by: Juri Lelli <juri.lelli@arm.com>
Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1413938203-224610-1-git-send-email-wanpeng.li@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/deadline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index 5285332..9d1e76a 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -1622,7 +1622,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 */

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl
  2014-10-22  9:33 ` Juri Lelli
@ 2016-03-29 22:47   ` Steven Rostedt
  2016-03-30  6:44     ` Peter Zijlstra
  0 siblings, 1 reply; 6+ messages in thread
From: Steven Rostedt @ 2016-03-29 22:47 UTC (permalink / raw)
  To: Juri Lelli
  Cc: Wanpeng Li, Ingo Molnar, Peter Zijlstra, Kirill V Tkhai, linux-kernel

On Wed, 22 Oct 2014 10:33:05 +0100
Juri Lelli <juri.lelli@arm.com> wrote:

> On 22/10/14 01:36, Wanpeng Li wrote:
> > 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 has had
> > several dl tasks before they have already been considered as candidates
> > to be pushed (or pulled). This patch implements 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"). 
> > 
> > Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
> > ---
> > v2 -> v3:
> >  * cleanup patch description
> >  * align && to p->nr_cpus_allowed
> > v1 -> v2:
> >  * use 12 or more chars for the git commit ID
> > 
> >  kernel/sched/deadline.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> > index abfaf3d..bd5e479 100644
> > --- a/kernel/sched/deadline.c
> > +++ b/kernel/sched/deadline.c
> > @@ -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 */
> >   
> 

I'm looking at some old changes for sched-deadline, and I stumbled
across this. As I'm working on sched deadline tests, I've discovered
that they can't have cpu affinity. They are limited to their sched
domains. That is, sched deadline tasks have whatever affinity that the
domain they happen to be in has.

Is there a condition where rq != task_rq(p) and p->nr_cpus_allowed > 1
isn't true?

Now maybe this will help with -rt when a task hits a migrate disable?

Just asking.

-- Steve

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl
  2016-03-29 22:47   ` Steven Rostedt
@ 2016-03-30  6:44     ` Peter Zijlstra
  2016-03-30  7:59       ` Wanpeng Li
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Zijlstra @ 2016-03-30  6:44 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Juri Lelli, Wanpeng Li, Ingo Molnar, Kirill V Tkhai, linux-kernel

On Tue, Mar 29, 2016 at 06:47:22PM -0400, Steven Rostedt wrote:
> I'm looking at some old changes for sched-deadline, and I stumbled
> across this. As I'm working on sched deadline tests, I've discovered
> that they can't have cpu affinity. They are limited to their sched
> domains. That is, sched deadline tasks have whatever affinity that the
> domain they happen to be in has.
> 
> Is there a condition where rq != task_rq(p) and p->nr_cpus_allowed > 1
> isn't true?

When holding rq->lock, no. I suppose the patch was just to mirror rt and
someone 'forgot' about the extra constraints on dl tasks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl
  2016-03-30  6:44     ` Peter Zijlstra
@ 2016-03-30  7:59       ` Wanpeng Li
  0 siblings, 0 replies; 6+ messages in thread
From: Wanpeng Li @ 2016-03-30  7:59 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Steven Rostedt, Juri Lelli, Wanpeng Li, Ingo Molnar,
	Kirill V Tkhai, linux-kernel

2016-03-30 14:44 GMT+08:00 Peter Zijlstra <peterz@infradead.org>:
> On Tue, Mar 29, 2016 at 06:47:22PM -0400, Steven Rostedt wrote:
>> I'm looking at some old changes for sched-deadline, and I stumbled
>> across this. As I'm working on sched deadline tests, I've discovered
>> that they can't have cpu affinity. They are limited to their sched
>> domains. That is, sched deadline tasks have whatever affinity that the

root domain I think.

>> domain they happen to be in has.
>>
>> Is there a condition where rq != task_rq(p) and p->nr_cpus_allowed > 1
>> isn't true?
>
> When holding rq->lock, no. I suppose the patch was just to mirror rt and
> someone 'forgot' about the extra constraints on dl tasks.
>

sched_class::switched_from() methods can drop rq->lock before your
great balance_callback patchset. :-)

Regards,
Wanpeng Li

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-30  7:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-22  0:36 [PATCH v3] sched/deadline: do not try to push tasks if pinned task switches to dl Wanpeng Li
2014-10-22  9:33 ` Juri Lelli
2016-03-29 22:47   ` Steven Rostedt
2016-03-30  6:44     ` Peter Zijlstra
2016-03-30  7:59       ` Wanpeng Li
2014-10-28 11:06 ` [tip:sched/core] sched/deadline: Do " tip-bot for Wanpeng Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).