Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1607127 > unrolled thread

[PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

Started byByungchul Park <byungchul.park@lge.com>
First post2017-03-23 03:20 +0100
Last post2017-03-23 23:50 +0100
Articles 7 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq() Byungchul Park <byungchul.park@lge.com> - 2017-03-23 03:20 +0100
    Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Byungchul Park <byungchul.park@lge.com> - 2017-03-23 10:30 +0100
      Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Steven Rostedt <rostedt@goodmis.org> - 2017-03-23 15:00 +0100
    Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Peter Zijlstra <peterz@infradead.org> - 2017-03-23 10:50 +0100
      Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Byungchul Park <byungchul.park@lge.com> - 2017-03-23 11:40 +0100
        Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Steven Rostedt <rostedt@goodmis.org> - 2017-03-23 15:10 +0100
          Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on  find_lowest_rq() Byungchul Park <byungchul.park@lge.com> - 2017-03-23 23:50 +0100

#1607127 — [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromByungchul Park <byungchul.park@lge.com>
Date2017-03-23 03:20 +0100
Subject[PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<to0w1-3Qh-15@gated-at.bofh.it>
It would be better to avoid pushing tasks to other cpu within
a SD_PREFER_SIBLING domain, instead, get more chances to check other
siblings.

Signed-off-by: Byungchul Park <byungchul.park@lge.com>
---
 kernel/sched/rt.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 979b734..6332b2ad 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -1624,6 +1624,7 @@ static int find_lowest_rq(struct task_struct *task)
 	struct cpumask *lowest_mask = this_cpu_cpumask_var_ptr(local_cpu_mask);
 	int this_cpu = smp_processor_id();
 	int cpu      = task_cpu(task);
+	int fallback_cpu = -1;
 
 	/* Make sure the mask is initialized first */
 	if (unlikely(!lowest_mask))
@@ -1671,6 +1672,15 @@ static int find_lowest_rq(struct task_struct *task)
 			best_cpu = cpumask_first_and(lowest_mask,
 						     sched_domain_span(sd));
 			if (best_cpu < nr_cpu_ids) {
+				/*
+				 * If current domain is SD_PREFER_SIBLING
+				 * flaged, we have to get more chances to
+				 * check other siblings.
+				 */
+				if (sd->flags & SD_PREFER_SIBLING) {
+					fallback_cpu = best_cpu;
+					continue;
+				}
 				rcu_read_unlock();
 				return best_cpu;
 			}
@@ -1679,6 +1689,13 @@ static int find_lowest_rq(struct task_struct *task)
 	rcu_read_unlock();
 
 	/*
+	 * If fallback_cpu is valid, all our quesses failed *except* for
+	 * SD_PREFER_SIBLING domain. Now, we can return the fallback cpu.
+	 */
+	if (fallback_cpu != -1)
+		return fallback_cpu;
+
+	/*
 	 * And finally, if there were no matches within the domains
 	 * just give the caller *something* to work with from the compatible
 	 * locations.
-- 
1.9.1

[toc] | [next] | [standalone]


#1607292 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromByungchul Park <byungchul.park@lge.com>
Date2017-03-23 10:30 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<to7ea-eW-17@gated-at.bofh.it>
In reply to#1607127
On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:
> It would be better to avoid pushing tasks to other cpu within
> a SD_PREFER_SIBLING domain, instead, get more chances to check other
> siblings.

+cc ghaskins@novell.com
+cc srostedt@redhat.com

> 
> Signed-off-by: Byungchul Park <byungchul.park@lge.com>
> ---
>  kernel/sched/rt.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index 979b734..6332b2ad 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -1624,6 +1624,7 @@ static int find_lowest_rq(struct task_struct *task)
>  	struct cpumask *lowest_mask = this_cpu_cpumask_var_ptr(local_cpu_mask);
>  	int this_cpu = smp_processor_id();
>  	int cpu      = task_cpu(task);
> +	int fallback_cpu = -1;
>  
>  	/* Make sure the mask is initialized first */
>  	if (unlikely(!lowest_mask))
> @@ -1671,6 +1672,15 @@ static int find_lowest_rq(struct task_struct *task)
>  			best_cpu = cpumask_first_and(lowest_mask,
>  						     sched_domain_span(sd));
>  			if (best_cpu < nr_cpu_ids) {
> +				/*
> +				 * If current domain is SD_PREFER_SIBLING
> +				 * flaged, we have to get more chances to
> +				 * check other siblings.
> +				 */
> +				if (sd->flags & SD_PREFER_SIBLING) {
> +					fallback_cpu = best_cpu;
> +					continue;
> +				}
>  				rcu_read_unlock();
>  				return best_cpu;
>  			}
> @@ -1679,6 +1689,13 @@ static int find_lowest_rq(struct task_struct *task)
>  	rcu_read_unlock();
>  
>  	/*
> +	 * If fallback_cpu is valid, all our quesses failed *except* for
> +	 * SD_PREFER_SIBLING domain. Now, we can return the fallback cpu.
> +	 */
> +	if (fallback_cpu != -1)
> +		return fallback_cpu;
> +
> +	/*
>  	 * And finally, if there were no matches within the domains
>  	 * just give the caller *something* to work with from the compatible
>  	 * locations.
> -- 
> 1.9.1

[toc] | [prev] | [next] | [standalone]


#1607518 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-03-23 15:00 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<tobrs-2VN-19@gated-at.bofh.it>
In reply to#1607292
On Thu, 23 Mar 2017 18:21:23 +0900
Byungchul Park <byungchul.park@lge.com> wrote:

> On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:
> > It would be better to avoid pushing tasks to other cpu within
> > a SD_PREFER_SIBLING domain, instead, get more chances to check other
> > siblings.  
> 
> +cc ghaskins@novell.com
> +cc srostedt@redhat.com
> 

Neither of us work at those companies anymore.

-- Steve

[toc] | [prev] | [next] | [standalone]


#1607308 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromPeter Zijlstra <peterz@infradead.org>
Date2017-03-23 10:50 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<to7xw-mT-13@gated-at.bofh.it>
In reply to#1607127
On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:
> It would be better to avoid pushing tasks to other cpu within
> a SD_PREFER_SIBLING domain, instead, get more chances to check other
> siblings.

Did you forget to post the rt equivalent to patch 1?

[toc] | [prev] | [next] | [standalone]


#1607335 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromByungchul Park <byungchul.park@lge.com>
Date2017-03-23 11:40 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<to8jU-XG-21@gated-at.bofh.it>
In reply to#1607308
On Thu, Mar 23, 2017 at 10:44:45AM +0100, Peter Zijlstra wrote:
> On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:
> > It would be better to avoid pushing tasks to other cpu within
> > a SD_PREFER_SIBLING domain, instead, get more chances to check other
> > siblings.
> 
> Did you forget to post the rt equivalent to patch 1?

No. Fortunately, rt currently works as patch 1 does.

[toc] | [prev] | [next] | [standalone]


#1607525 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-03-23 15:10 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<tobB8-3e8-13@gated-at.bofh.it>
In reply to#1607335
On Thu, 23 Mar 2017 19:36:51 +0900
Byungchul Park <byungchul.park@lge.com> wrote:

> On Thu, Mar 23, 2017 at 10:44:45AM +0100, Peter Zijlstra wrote:
> > On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:  
> > > It would be better to avoid pushing tasks to other cpu within
> > > a SD_PREFER_SIBLING domain, instead, get more chances to check
> > > other siblings.  
> > 
> > Did you forget to post the rt equivalent to patch 1?  
> 
> No. Fortunately, rt currently works as patch 1 does.

I'm thinking that the rt and deadline search for lowest rq functions
should be merged as one.

What they are doing is looking for the rq with the lowest priority.
deadline currently doesn't care if it picks an rq with an rt task
running on it, even when there's an rq with no rt tasks that the dl task
can migrate to. The same goes with rt. It could place an RT task on an
rq running a deadline task without knowing the rt task wont be able to
run on that cpu immediately.

-- Steve

[toc] | [prev] | [next] | [standalone]


#1607999 — Re: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()

FromByungchul Park <byungchul.park@lge.com>
Date2017-03-23 23:50 +0100
SubjectRe: [PATCH v3 3/3] sched/rt: Add support for SD_PREFER_SIBLING on find_lowest_rq()
Message-ID<tojIl-wf-1@gated-at.bofh.it>
In reply to#1607525
On Thu, Mar 23, 2017 at 07:08:24AM -0700, Steven Rostedt wrote:
> On Thu, 23 Mar 2017 19:36:51 +0900
> Byungchul Park <byungchul.park@lge.com> wrote:
> 
> > On Thu, Mar 23, 2017 at 10:44:45AM +0100, Peter Zijlstra wrote:
> > > On Thu, Mar 23, 2017 at 11:12:49AM +0900, Byungchul Park wrote:  
> > > > It would be better to avoid pushing tasks to other cpu within
> > > > a SD_PREFER_SIBLING domain, instead, get more chances to check
> > > > other siblings.  
> > > 
> > > Did you forget to post the rt equivalent to patch 1?  
> > 
> > No. Fortunately, rt currently works as patch 1 does.
> 
> I'm thinking that the rt and deadline search for lowest rq functions
> should be merged as one.
> 
> What they are doing is looking for the rq with the lowest priority.
> deadline currently doesn't care if it picks an rq with an rt task
> running on it, even when there's an rq with no rt tasks that the dl task
> can migrate to. The same goes with rt. It could place an RT task on an
> rq running a deadline task without knowing the rt task wont be able to
> run on that cpu immediately.

I also think so. And IMHO there are more things to care wrt rt/dl
migration. As you said, the cases should be considered and fixed. I
wonder if the rt and dl seartch should be merged as one though..

Thank you,
Byungchul

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web