From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
tglx@linutronix.de, mingo@elte.hu, ak@linux.intel.com,
linux-kernel@vger.kernel.org
Subject: Re: Odd performance results
Date: Tue, 12 Jul 2016 11:26:35 -0700 [thread overview]
Message-ID: <20160712182635.GV7094@linux.vnet.ibm.com> (raw)
In-Reply-To: <27d2c710-479d-77a9-f2c6-875e9c2bc40f@zytor.com>
On Tue, Jul 12, 2016 at 10:49:58AM -0700, H. Peter Anvin wrote:
> On 07/12/16 08:05, Paul E. McKenney wrote:
> > On Tue, Jul 12, 2016 at 04:55:51PM +0200, Peter Zijlstra wrote:
> >> On Sun, Jul 10, 2016 at 07:43:27AM -0700, Paul E. McKenney wrote:
> >>> On Sun, Jul 10, 2016 at 07:17:19AM +0200, Peter Zijlstra wrote:
> >>>>
> >>>>
> >>>> On 10 July 2016 06:26:39 CEST, "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
> >>>>> Hello!
> >>>>>
> >>>>> So I ran a quick benchmark which showed stair-step results. I
> >>>>> immediately
> >>>>> thought "Ah, this is due to CPU 0 and 1, 2 and 3, 4 and 5, and 6 and 7
> >>>>> being threads in a core." Then I thought "Wait, this is an x86!"
> >>>>> Then I dumped out cpu*/topology/thread_siblings_list, getting the
> >>>>> following:
> >>>>>
> >>>>> cpu0/topology/thread_siblings_list: 0-1
> >>>>> cpu1/topology/thread_siblings_list: 0-1
> >>>>> cpu2/topology/thread_siblings_list: 2-3
> >>>>> cpu3/topology/thread_siblings_list: 2-3
> >>>>> cpu4/topology/thread_siblings_list: 4-5
> >>>>> cpu5/topology/thread_siblings_list: 4-5
> >>>>> cpu6/topology/thread_siblings_list: 6-7
> >>>>> cpu7/topology/thread_siblings_list: 6-7
> >>>>
> >>>>
> >>>> I'm guessing this is an AMD bulldozer like machine?
> >>>
> >>> /proc/cpuinfo thinks otherwise:
> >>>
> >>> processor : 0
> >>> vendor_id : GenuineIntel
> >>> cpu family : 6
> >>> model : 60
> >>> model name : Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
> >>
> >> Weird, I've never seen an Intel box do that before... hpa, any idea? or
> >> is this just one weird BIOS.
> >
> > ;-)
> >
> > It is a Lenovo W541 laptop, for whatever that might be worth. Roughly
> > on year old.
>
> Well, the obvious thing here is that CPUs 0-1, 2-3, 4-5, and 6-7 *are*
> indeed threads in a core... Intel x86 products have supported
> multithreading since the Pentium 4. So the "wait, this is an x86!" bit
> is strange to me.
>
> The CPU in question (and /proc/cpuinfo should show this) has four cores
> with a total of eight threads. The "siblings" and "cpu cores" fields in
> /proc/cpuinfo should show the same thing. So I am utterly confused
> about what is unexpected here?
My prior experience with Intel x86 systems led me to expect that the
hardware-thread pairs would instead be 0 and 4, 1 and 5, 2 and 6, and 3
and 7. This would result in a graph with a two-segment line, having
higher slope for the lower-numbered CPUs and a lower slope for the
higher-numbered CPUs, and I have in fact seen this behavior on older
Intel x86 systems. See for example slides 64-67 of:
http://www.rdrop.com/users/paulmck/scalability/paper/Updates.2016.06.05a.TUDresden.pdf
But don't get me wrong, I do very much prefer the CPU-numbering approach
that my laptop uses, where the hardware threads in a given core have
consecutive numbers.
> Also, you mentioned absolutely nothing about what kind of benchmark it
> was, or what the "stairstepping" results imply, so it doesn't really
> make it any easier...
The benchmark was a POSIX-threads multithreaded benchmark with each
thread repeatedly searching a small linked list, which should fit into
the nearest-to-CPU cache. The "stairstepping" results suggest to me
that a no-cache-miss pointer-following workload allows a single hardware
thread to consume most of a given core's relevant hardware resources,
at least on this particular chip. Which is fine -- this sort of thing
always has been workload-specific.
If you want to see an example plot, take a look at:
CodeSamples/defer/perf-rcu-qsbr.eps
within:
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git
Thanx, Paul
next prev parent reply other threads:[~2016-07-12 18:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-10 4:26 Odd performance results Paul E. McKenney
2016-07-10 5:17 ` Peter Zijlstra
2016-07-10 14:43 ` Paul E. McKenney
2016-07-12 14:55 ` Peter Zijlstra
2016-07-12 15:05 ` Paul E. McKenney
2016-07-12 17:49 ` H. Peter Anvin
2016-07-12 18:26 ` Paul E. McKenney [this message]
2016-07-12 18:51 ` Peter Zijlstra
2016-07-12 19:10 ` [CRM114spam]: " Dr. David Alan Gilbert
2016-07-12 19:59 ` Paul E. McKenney
2016-07-13 7:20 ` Ingo Molnar
2016-07-13 7:18 ` Ingo Molnar
2016-07-13 12:27 ` Henrique de Moraes Holschuh
2016-07-13 12:33 ` Peter Zijlstra
2016-07-13 14:06 ` Paul E. McKenney
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=20160712182635.GV7094@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=ak@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.