From: Peter Zijlstra <peterz@infradead.org>
To: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>,
LKML <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Subject: Re: x86 perf's dTLB-load-misses broken on IvyBridge?
Date: Wed, 19 Feb 2014 09:43:08 +0100 [thread overview]
Message-ID: <20140219084308.GE27965@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <5303E8BF.9030107@linux.intel.com>
On Tue, Feb 18, 2014 at 03:11:59PM -0800, Dave Hansen wrote:
> I noticed that perf's dTLB-load-misses even t isn't working on my
> Ivybridge system:
>
> > Performance counter stats for 'system wide':
> >
> > 0 dTLB-load-misses [100.00%]
> > 48,570 dTLB-store-misses [100.00%]
> > 202,573 iTLB-loads [100.00%]
> > 271,546 iTLB-load-misses # 134.05% of all iTLB cache hits
>
> But it works on a SandyBridge system that I have.
>
> arch/x86/kernel/cpu/perf_event_intel.c seems to use the same tables for
> SandyBridge and IvyBridge, so they both use the
> 'MEM_UOP_RETIRED.ALL_LOADS' event:
>
> > [ C(DTLB) ] = {
> > [ C(OP_READ) ] = {
> > [ C(RESULT_ACCESS) ] = 0x81d0, /* MEM_UOP_RETIRED.ALL_LOADS */
> > [ C(RESULT_MISS) ] = 0x0108, /* DTLB_LOAD_MISSES.CAUSES_A_WALK */
> > },
>
> But that event looks to be unsupported on this CPU:
>
> > /ocperf.py stat -a -e mem_uops_retired.all_loads sleep 1
That kind of snake voo-doo is that?
> > perf stat -a -e cpu/event=0xd0,umask=0x81,name=mem_uops_retired_all_loads/ sleep 1
So this line only produces the mem_uops_retired_all_loads thing, not the
_ps thing.
> >
> > Performance counter stats for 'system wide':
> >
> > <not supported> mem_uops_retired_all_loads
> > 50,204,763 mem_uops_retired_all_loads_ps
>
> But there's a "_ps" version which uses PEBS which does work?
So clearly there is no _ps version, as I'm still utterly confused as to
wtf you mean and where it came from.
> > mem_uops_retired.all_loads [Load uops retired to architected path with filter on bits 0 and 1 applied. (Supports PEBS)]
> > mem_uops_retired.all_loads_ps [Load uops retired to architected path with filter on bits 0 and 1 applied. (Uses PEBS) (Uses PEBS)]
What's that; SDM not haz this.
> Should we swap perf_event_intel.c over to use the PEBS version so that
> it works everywhere?
I'm confused; where does this _ps thing come from? There's nothing like
that in the SDM. That only lists the D0H event, and says it should work.
Of course the SDM is trying to confuse the living daylight out of people
by calling it crap like "3rd gen intel core", which just shows they
can't bloody well count either, since it went:
core, core2, nhm, wsm, snb, ivb
do its damn well 6th gen.
next prev parent reply other threads:[~2014-02-19 8:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-18 23:11 x86 perf's dTLB-load-misses broken on IvyBridge? Dave Hansen
2014-02-19 8:43 ` Peter Zijlstra [this message]
2014-02-19 15:23 ` Andi Kleen
2014-02-19 15:40 ` x86 perf's dTLB-load-misses broken on IvyBridge? II Andi Kleen
2014-02-19 15:54 ` Peter Zijlstra
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=20140219084308.GE27965@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=acme@ghostprotocols.net \
--cc=ak@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.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