lkml.org 
[lkml]   [2011]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [generalized cache events] Re: [PATCH 1/1] perf tools: Add missing user space support for config1/config2

* Andi Kleen <ak@linux.intel.com> wrote:

> > > Yes, and note that with instructions events we even have skid-less PEBS
> > > profiling so seeing the precise .
> > - location of instructions is possible.
>
> It was better when it was eaten. PEBS does not actually eliminated
> skid unfortunately. The interrupt still occurs later, so the
> instruction location is off.
>
> PEBS merely gives you more information.

Have you actually tried perf's PEBS support feature? Try:

perf record -e instructions:pp ./myapp

(the ':pp' postfix stands for 'precise' and activates PEBS+LBR tricks.)

Look at the perf report --tui annotated asssembly output (or check 'perf
annotate' directly) and see how precise and skid-less the hits are. Works
pretty well on Nehalem.

Here's a cache-bound loop with skid (profiled with '-e instructions'):

: 0000000000400390 <main>:
0.00 : 400390: 31 c0 xor %eax,%eax
0.00 : 400392: eb 22 jmp 4003b6 <main+0x26>
12.08 : 400394: fe 84 10 50 08 60 00 incb 0x600850(%rax,%rdx,1)
87.92 : 40039b: 48 81 c2 10 27 00 00 add $0x2710,%rdx
0.00 : 4003a2: 48 81 fa 00 e1 f5 05 cmp $0x5f5e100,%rdx
0.00 : 4003a9: 75 e9 jne 400394 <main+0x4>
0.00 : 4003ab: 48 ff c0 inc %rax
0.00 : 4003ae: 48 3d 10 27 00 00 cmp $0x2710,%rax
0.00 : 4003b4: 74 04 je 4003ba <main+0x2a>
0.00 : 4003b6: 31 d2 xor %edx,%edx
0.00 : 4003b8: eb da jmp 400394 <main+0x4>
0.00 : 4003ba: 31 c0 xor %eax,%eax

Those 'ADD' instruction hits are bogus: 99% of the cost in this function is in
the INCB, but the PMU NMI often skids to the next (few) instructions.

Profiled with "-e instructions:pp" we get:

: 0000000000400390 <main>:
0.00 : 400390: 31 c0 xor %eax,%eax
0.00 : 400392: eb 22 jmp 4003b6 <main+0x26>
85.33 : 400394: fe 84 10 50 08 60 00 incb 0x600850(%rax,%rdx,1)
0.00 : 40039b: 48 81 c2 10 27 00 00 add $0x2710,%rdx
14.67 : 4003a2: 48 81 fa 00 e1 f5 05 cmp $0x5f5e100,%rdx
0.00 : 4003a9: 75 e9 jne 400394 <main+0x4>
0.00 : 4003ab: 48 ff c0 inc %rax
0.00 : 4003ae: 48 3d 10 27 00 00 cmp $0x2710,%rax
0.00 : 4003b4: 74 04 je 4003ba <main+0x2a>
0.00 : 4003b6: 31 d2 xor %edx,%edx
0.00 : 4003b8: eb da jmp 400394 <main+0x4>
0.00 : 4003ba: 31 c0 xor %eax,%eax

The INCB has the most hits as expected - but we also learn that there's
something about the CMP.

Thanks,

Ingo


\
 
 \ /
  Last update: 2011-04-23 10:07    [W:0.188 / U:0.620 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site