From: Mike Galbraith <efault@gmx.de>
To: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@elte.hu>, Paul Turner <pjt@google.com>
Subject: Re: sched: Avoid SMT siblings in select_idle_sibling() if possible
Date: Fri, 18 Nov 2011 16:14:27 +0100 [thread overview]
Message-ID: <1321629267.7080.13.camel@marge.simson.net> (raw)
In-Reply-To: <1321551381.15339.21.camel@sbsiddha-desk.sc.intel.com>
On Thu, 2011-11-17 at 09:36 -0800, Suresh Siddha wrote:
> On Thu, 2011-11-17 at 08:38 -0800, Mike Galbraith wrote:
> > On Thu, 2011-11-17 at 16:56 +0100, Peter Zijlstra wrote:
> > > Something like the below maybe, although I'm certain it all can be
> > > written much nicer indeed.
> >
> > I'll give it a go.
> >
> > Squabbling with bouncing buddies in an isolated and otherwise idle
> > cpuset ate my day.
> >
>
> Well looks like I managed to have the similar issue in my patch too.
> Anyways here is the updated cleaned up version of the patch ;)
Works fine. However, unpinned buddies bounce more than with virgin
mainline. I tried doing it differently (mikie in numbers below), and it
worked for a single unbound pair, but raped multiple unbound pairs.
---
kernel/sched_fair.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
Index: linux-3.0-tip/kernel/sched_fair.c
===================================================================
--- linux-3.0-tip.orig/kernel/sched_fair.c
+++ linux-3.0-tip/kernel/sched_fair.c
@@ -2276,17 +2276,11 @@ static int select_idle_sibling(struct ta
for_each_cpu_and(i, sched_domain_span(sd), tsk_cpus_allowed(p)) {
if (idle_cpu(i)) {
target = i;
+ if (sd->flags & SD_SHARE_CPUPOWER)
+ continue;
break;
}
}
-
- /*
- * Lets stop looking for an idle sibling when we reached
- * the domain that spans the current cpu and prev_cpu.
- */
- if (cpumask_test_cpu(cpu, sched_domain_span(sd)) &&
- cpumask_test_cpu(prev_cpu, sched_domain_span(sd)))
- break;
}
rcu_read_unlock();
mikie2 is your patch + twiddles I'll post as a reply to this post.
kernel v3.2-rc1-306-g7f80850
TTWU_QUEUE off (skews results), test in cpuset 1-3,5-7
Test1: one unbound TCP_RR pair, three runs
virgin 66611.73 71376.00 61297.09 avg 66428.27 1.000
suresh 68488.88 68412.48 68149.73 (bounce) 68350.36 1.028
mikie 75925.91 75851.63 74617.29 (bounce--) 75464.94 1.136
mikie2 71403.39 71396.73 72258.91 NO_SIBLING_LIMIT_SYNC 71686.34 1.079
mikie2 139210.06 140485.95 140189.95 SIBLING_LIMIT_SYNC 139961.98 2.106
Test2: one unbound TCP_RR pair plus 2 unbound hogs, three runs
virgin 87108.59 88737.30 87383.98 avg 87743.29 1.000
suresh 84281.24 84725.07 84823.57 84931.93 .967
mikie 87850.37 86081.73 85789.49 86573.86 .986
mikie2 92613.79 92022.95 92014.26 NO_SIBLING_LIMIT_SYNC 92217.00 1.050
mikie2 134682.16 133497.30 133584.48 SIBLING_LIMIT_SYNC
Test3: three unbound TCP_RR pairs, single run
virgin 55246.99 55138.67 55248.95 avg 55211.53 1.000
suresh 53141.24 53165.45 53224.71 53177.13 .963
mikie 47627.14 47361.68 47389.41 47459.41 .859
mikie2 57969.49 57704.79 58218.14 NO_SIBLING_LIMIT_SYNC 57964.14 1.049
mikie2 132205.11 133726.94 133706.09 SIBLING_LIMIT_SYNC 133212.71 2.412
Test4: three bound TCP_RR pairs, single run
virgin 130073.67 130202.02 131666.48 avg 130647.39 1.000
suresh 129805.98 128058.25 128709.77 128858.00 .986
mikie 125597.11 127260.39 127208.73 126688.74 .969
mikie2 135441.58 134961.89 137162.00 135855.15 1.039
Test5: drop shield, tbench 8
virgin 2118.26 MB/sec 1.000
suresh 2036.32 MB/sec .961
mikie 2051.18 MB/sec .968
mikie2 2125.21 MB/sec 1.003 (hohum, all within tbench jitter)
Problem reference: select_idle_sibling() = painful L2 misses with westmere.
Identical configs, nohz=off NO_TTWU_QUEUE,
processor.max_cstate=0 intel_idle.max_cstate=0
turbo-boost off (so both are now plain 2.4GHz boxen)
single bound TCP_RR pair
E5620 Q6600 bound
90196.84 42517.96 3->0
92654.92 43946.50 3->1
91735.26 95274.10 3->2
129394.55 95266.83 3->3
89127.98 3->4
91303.15 3->5
91345.85 3->6
74141.88 3->7 huh?.. load is synchronous!
next prev parent reply other threads:[~2011-11-18 15:14 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-15 9:46 sched: Avoid SMT siblings in select_idle_sibling() if possible Peter Zijlstra
2011-11-16 1:14 ` Suresh Siddha
2011-11-16 9:24 ` Mike Galbraith
2011-11-16 18:37 ` Suresh Siddha
2011-11-17 1:59 ` Mike Galbraith
2011-11-17 15:38 ` Mike Galbraith
2011-11-17 15:56 ` Peter Zijlstra
2011-11-17 16:38 ` Mike Galbraith
2011-11-17 17:36 ` Suresh Siddha
2011-11-18 15:14 ` Mike Galbraith [this message]
2011-11-18 15:17 ` [patch 1/6] sched: use rt.nr_cpus_allowed to recover select_task_rq() cycles Mike Galbraith
2011-11-18 15:35 ` Peter Zijlstra
2011-11-18 17:34 ` Mike Galbraith
2011-11-22 14:17 ` Mike Galbraith
2011-11-22 14:18 ` [patch 1/7] " Mike Galbraith
2011-12-06 9:50 ` [tip:sched/core] sched: Use " tip-bot for Mike Galbraith
2011-11-22 14:20 ` [patch 2/7] sched: save some hrtick_start_fair cycles Mike Galbraith
2011-12-06 20:20 ` [tip:sched/core] sched: Save " tip-bot for Mike Galbraith
2011-11-22 14:21 ` [patch 3/7] sched: set skip_clock_update in yield_task_fair() Mike Galbraith
2011-11-23 11:53 ` Peter Zijlstra
2011-11-23 12:06 ` Mike Galbraith
2011-11-23 14:48 ` Peter Zijlstra
2011-11-24 3:50 ` Mike Galbraith
2011-11-24 10:12 ` Peter Zijlstra
2011-11-25 6:39 ` Mike Galbraith
2011-12-06 9:51 ` [tip:sched/core] sched: Set " tip-bot for Mike Galbraith
2011-11-22 14:22 ` [patch 4/7] sched: convert rq->avg_idle to rq->avg_event Mike Galbraith
2011-11-23 11:55 ` Peter Zijlstra
2011-11-23 12:09 ` Mike Galbraith
2011-11-23 12:27 ` Peter Zijlstra
2011-11-23 12:57 ` Mike Galbraith
2011-11-23 14:21 ` Mike Galbraith
2011-11-22 14:23 ` [patch 5/7] sched: ratelimit select_idle_sibling()for sync wakeups Mike Galbraith
2011-11-22 14:24 ` [patch 6/7] sched: use rq->avg_event to resurrect nohz ratelimiting Mike Galbraith
2011-11-23 11:57 ` Peter Zijlstra
2011-11-23 12:35 ` Mike Galbraith
2011-11-22 14:26 ` [patch 7/7] sched: only use TTWU_QUEUE when waker/wakee CPUs do not share top level cache Mike Galbraith
2011-11-23 12:08 ` Peter Zijlstra
2011-11-18 15:39 ` [patch 1/6] sched: use rt.nr_cpus_allowed to recover select_task_rq() cycles Hillf Danton
2011-11-18 15:18 ` [patch 2/6] sched: convert rq->avg_idle to rq->avg_event Mike Galbraith
2011-11-18 15:19 ` [patch 3/6] sched: use rq->avg_event to resurrect nohz ratelimiting Mike Galbraith
2011-11-18 15:36 ` Peter Zijlstra
2011-11-18 17:42 ` Mike Galbraith
2011-11-19 0:51 ` Van De Ven, Arjan
2011-11-19 4:15 ` Mike Galbraith
2011-11-18 15:20 ` [patch 4/6] sched: ratelimit select_idle_sibling()for sync wakeups Mike Galbraith
2011-11-18 15:22 ` [patch 5/6] sched: save some hrtick_start_fair cycles Mike Galbraith
2011-11-18 15:23 ` [patch 6/6] sched: set skip_clock_update in yield_task_fair() Mike Galbraith
2012-02-20 14:41 ` sched: Avoid SMT siblings in select_idle_sibling() if possible Peter Zijlstra
2012-02-20 15:03 ` Srivatsa Vaddagiri
2012-02-20 18:25 ` Mike Galbraith
2012-02-21 0:06 ` Srivatsa Vaddagiri
2012-02-21 6:37 ` Mike Galbraith
2012-02-21 8:09 ` Srivatsa Vaddagiri
2012-02-20 18:14 ` Mike Galbraith
2012-02-20 18:15 ` Peter Zijlstra
2012-02-20 19:07 ` Peter Zijlstra
2012-02-21 5:43 ` Mike Galbraith
2012-02-21 8:32 ` Srivatsa Vaddagiri
2012-02-21 9:21 ` Mike Galbraith
2012-02-21 10:37 ` Peter Zijlstra
2012-02-21 14:58 ` Srivatsa Vaddagiri
2012-02-23 10:49 ` Srivatsa Vaddagiri
2012-02-23 11:19 ` Ingo Molnar
2012-02-23 12:18 ` Srivatsa Vaddagiri
2012-02-23 11:20 ` Srivatsa Vaddagiri
2012-02-23 11:26 ` Ingo Molnar
2012-02-23 11:32 ` Srivatsa Vaddagiri
2012-02-23 16:17 ` Ingo Molnar
2012-02-23 11:21 ` Mike Galbraith
2012-02-25 6:54 ` Srivatsa Vaddagiri
2012-02-25 8:30 ` Mike Galbraith
2012-02-27 22:11 ` Suresh Siddha
2012-02-28 5:05 ` Mike Galbraith
2011-11-17 19:08 ` Suresh Siddha
2011-11-18 15:12 ` Peter Zijlstra
2011-11-18 15:26 ` Mike Galbraith
2011-12-06 9:49 ` [tip:sched/core] sched: Clean up domain traversal in select_idle_sibling() tip-bot for Suresh Siddha
2011-11-18 23:40 ` [tip:sched/core] sched: Avoid SMT siblings in select_idle_sibling() if possible tip-bot for Peter Zijlstra
[not found] <1329764866.2293.376.camhel@twins>
2012-03-05 15:24 ` Srivatsa Vaddagiri
2012-03-06 9:14 ` Ingo Molnar
2012-03-06 10:03 ` Srivatsa Vaddagiri
2012-03-22 15:32 ` Srivatsa Vaddagiri
2012-03-23 6:38 ` Mike Galbraith
2012-03-26 8:29 ` Peter Zijlstra
2012-03-26 8:36 ` Peter Zijlstra
2012-03-26 17:35 ` Srivatsa Vaddagiri
2012-03-26 18:06 ` Peter Zijlstra
2012-03-27 13:56 ` Mike Galbraith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1321629267.7080.13.camel@marge.simson.net \
--to=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=suresh.b.siddha@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).