linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: perf tools miscellaneous questions
       [not found]         ` <fa.4sHfhlc/fMhpYgKda4IfUHZ7jMY@ifi.uio.no>
@ 2010-11-05 12:38           ` Francis Moreau
  2010-11-05 14:02             ` Vince Weaver
  0 siblings, 1 reply; 16+ messages in thread
From: Francis Moreau @ 2010-11-05 12:38 UTC (permalink / raw)
  To: Victor Jimenez
  Cc: Reid Kleckner, Frederic Weisbecker, linux-kernel, Ingo Molnar,
	Peter Zijlstra, Arnaldo Carvalho de Melo, Stephane Eranian,
	linux-perf-users

Victor Jimenez <victor.javier@bsc.es> writes:

[...]

> If you are measuring last level cache misses, I would recommend you to
> use a memory intensive application/benchmark instead of /bin/true, as
> otherwise there can be a significant variation between two runs.

I agree.

But still with intensive application, I got the same results:


  $ perf stat -r3 -e cache-misses:u gzip -9 -c vmlinux.o >/dev/null

   Performance counter stats for 'gzip -9 -c vmlinux.o' (3 runs):

               950704  cache-misses               ( +-  24.925% )

         82.619412905  seconds time elapsed   ( +-   0.072% )


  $ perf stat -r3 -e llc-load-misses:u,llc-store-misses:u gzip -9 -c vmlinux.o >/dev/null

   Performance counter stats for 'gzip -9 -c vmlinux.o' (3 runs):
  
               317054  LLC-load-misses            ( +-  11.758% )
               162634  LLC-store-misses           ( +-   9.700% )

         82.657099783  seconds time elapsed   ( +-   0.167% )

Thanks
-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-05 12:38           ` perf tools miscellaneous questions Francis Moreau
@ 2010-11-05 14:02             ` Vince Weaver
  2010-11-06 14:44               ` Francis Moreau
  0 siblings, 1 reply; 16+ messages in thread
From: Vince Weaver @ 2010-11-05 14:02 UTC (permalink / raw)
  To: Francis Moreau
  Cc: Victor Jimenez, Reid Kleckner, Frederic Weisbecker, linux-kernel,
	Ingo Molnar, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Stephane Eranian, linux-perf-users

On Fri, 5 Nov 2010, Francis Moreau wrote:

> Victor Jimenez <victor.javier@bsc.es> writes:
> 
> [...]
> 
> > If you are measuring last level cache misses, I would recommend you to
> > use a memory intensive application/benchmark instead of /bin/true, as
> > otherwise there can be a significant variation between two runs.
> 
> I agree.
> 
> But still with intensive application, I got the same results:


you're going to need to get your architectural manual for your processor 
and use raw events (not the kernel default ones) if you really want to 
find out what's going on.  A tool like libpfm4 can help change the names 
to raw events for you.

Cache events are very tricky and they often don't return the values you 
expect.  Hardware prefetch can cause some very non-intuitive things to 
happen, and the prefetch only affects certain levels of cache.

Vince

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-05 14:02             ` Vince Weaver
@ 2010-11-06 14:44               ` Francis Moreau
  2010-11-06 20:50                 ` Vince Weaver
  0 siblings, 1 reply; 16+ messages in thread
From: Francis Moreau @ 2010-11-06 14:44 UTC (permalink / raw)
  To: Vince Weaver
  Cc: Victor Jimenez, Reid Kleckner, Frederic Weisbecker, linux-kernel,
	Ingo Molnar, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Stephane Eranian, linux-perf-users

Vince Weaver <vweaver1@eecs.utk.edu> writes:

> On Fri, 5 Nov 2010, Francis Moreau wrote:
>
>> Victor Jimenez <victor.javier@bsc.es> writes:
>> 
>> [...]
>> 
>> > If you are measuring last level cache misses, I would recommend you to
>> > use a memory intensive application/benchmark instead of /bin/true, as
>> > otherwise there can be a significant variation between two runs.
>> 
>> I agree.
>> 
>> But still with intensive application, I got the same results:
>
>
> you're going to need to get your architectural manual for your processor 
> and use raw events (not the kernel default ones) if you really want to 
> find out what's going on.  A tool like libpfm4 can help change the names 
> to raw events for you.

Ouch that's a bit rude for a man page ;)

Specially since 'llc-loads-misses' is and should be self speaking.

OK, my cpu is described by:

,----
|   vendor_id	: GenuineIntel
|   cpu family	: 6
|   model	: 15
|   model name	: Intel(R) Core(TM)2 CPU         T5500  @ 1.66GHz
`----

Could you point out the best architecture manual for it which describe
the raw events ?

BTW, I'm wondering if event names are coherent across the different
architectures supported by Linux.

Thanks
-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-06 14:44               ` Francis Moreau
@ 2010-11-06 20:50                 ` Vince Weaver
  2010-11-06 20:52                   ` Vince Weaver
  2010-11-08 19:43                   ` Francis Moreau
  0 siblings, 2 replies; 16+ messages in thread
From: Vince Weaver @ 2010-11-06 20:50 UTC (permalink / raw)
  To: Francis Moreau
  Cc: Victor Jimenez, Reid Kleckner, Frederic Weisbecker, linux-kernel,
	Ingo Molnar, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Stephane Eranian, linux-perf-users


This is rapidly getting of topic, especially for linux-kernel

On Sat, 6 Nov 2010, Francis Moreau wrote:

> Specially since 'llc-loads-misses' is and should be self speaking.

Not necessarily.  Does "last level" mean the common L2 or the shared L3?
Do the misses count prefetch misses?  Do the misses count coherency
actions or else just "normal" cache accesses?  Does your processor count 
multiple loads from some single instructions [unfortunately, many do].

Most events are poorly documented, if at all.  And the Linux kernel 
predefined event list is loosely based upon the intel architectural
events, which not every processor has and I've heard from insiders saying 
that you should be very careful for the results from those events.  Also 
as far as I know there hasn't been much validation work on whether the 
events return useful values.  No chip company will guarantee the values 
returned by performance counters; they are more or less a bonus feature 
that works most of the time but you never really know the accuracy of what 
you are reading out of them.

> Could you point out the best architecture manual for it which describe
> the raw events ?

For your Core2 you want the Intel Software Developer's Manual, volume 2B.  
Google should find it.

> BTW, I'm wondering if event names are coherent across the different
> architectures supported by Linux.

Nope.  They aren't even consistent across the same chip company.  For 
example, Core2 and Nehalem have completely different event names, and even 
between Nehalem and Westmere there are incompatible changes.

Vince

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-06 20:50                 ` Vince Weaver
@ 2010-11-06 20:52                   ` Vince Weaver
  2010-11-08 19:43                   ` Francis Moreau
  1 sibling, 0 replies; 16+ messages in thread
From: Vince Weaver @ 2010-11-06 20:52 UTC (permalink / raw)
  To: Francis Moreau
  Cc: Victor Jimenez, Reid Kleckner, Frederic Weisbecker, linux-kernel,
	Ingo Molnar, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Stephane Eranian, linux-perf-users

On Sat, 6 Nov 2010, Vince Weaver wrote:

> For your Core2 you want the Intel Software Developer's Manual, volume 2B.  
> Google should find it.

typo, sorry, I meant Volume 3B.

Vince

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-06 20:50                 ` Vince Weaver
  2010-11-06 20:52                   ` Vince Weaver
@ 2010-11-08 19:43                   ` Francis Moreau
  1 sibling, 0 replies; 16+ messages in thread
From: Francis Moreau @ 2010-11-08 19:43 UTC (permalink / raw)
  To: Vince Weaver
  Cc: Victor Jimenez, Reid Kleckner, Frederic Weisbecker, linux-kernel,
	Ingo Molnar, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Stephane Eranian, linux-perf-users

Vince Weaver <vweaver1@eecs.utk.edu> writes:

> This is rapidly getting of topic, especially for linux-kernel

Don't think so but feel free to remove LKML from Cc.

[...]

> Most events are poorly documented, if at all.  And the Linux kernel 
> predefined event list is loosely based upon the intel architectural
> events, which not every processor has and I've heard from insiders saying 
> that you should be very careful for the results from those events.

I agree, that's why I try to clarify some events.

Perf tools are cool stuffs, IMHO, but it's pretty hard for me to
interpret results. I tried to compare some numbers in my previous posts
but I got some 'random' figures for now.

Another example is given below where I'm trying to bench a 2 functions
which do the same thing but differently.

   $ perf stat -e cache-misses:u,l1d-loads-misses:u,cycles:u -p $(pgrep test)
     C-c C-c
    Performance counter stats for process id '30263':
   
                406532  cache-misses            
               4986030  L1-dcache-load-misses   
             120247366  cycles                  
   
           2.482196928  seconds time elapsed
   
   
   $ perf stat -e cache-misses:u,l1d-loads-misses:u,cycles:u -p $(pgrep test)
     C-c C-c
    Performance counter stats for process id '30271':
   
                459683  cache-misses            
               2513338  L1-dcache-load-misses   
             159968076  cycles                  
   
           2.129021265  seconds time elapsed

Which numbers are important here ? cache-misses ? L1-dcache-load-misses
?

I just can say that the first run looks faster.

-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-07 21:40     ` Frederic Weisbecker
@ 2010-11-09 11:07       ` Francis Moreau
  0 siblings, 0 replies; 16+ messages in thread
From: Francis Moreau @ 2010-11-09 11:07 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

Frederic Weisbecker <fweisbec@gmail.com> writes:

> On Thu, Nov 04, 2010 at 09:52:09AM +0100, Francis Moreau wrote:

[...]

>> 
>> No problem, but yes this part should be documented somewhere. And I
>> think the syntax of event too, specially the modifier like 'u' or 'p'.
>
> Ah that is documented in "man perf-list".

Ok, after updating my 3 weeks old kernel, modifiers are now documented.

But I failed to generate it:

    XMLTO perf-record.1
xmlto: /home/fmoreau/linux-2.6/tools/perf/Documentation/perf-record.xml does not validate (status 3)

BTW, what does 'skid' mean ? s(?) k(?) instruction delay ?

[...]

> I have the same problem. But running perf record with this :p works
> for me. Which is what we want: pebs is useful for sampling, not
> counting-only.

That makes sense but I still have a problem:

   $ perf record -e cache-misses:p -p $(pgrep test)

  Error: perfcounter syscall returned with -1 (No space left on device)

  Fatal: No CONFIG_PERF_EVENTS=y kernel support configured?


> Ah and that won't work if you don't run some intel CPU I think.  Check
> you have PEBS support in /proc/cpuinfo

It seems so:

   $ grep -qi pebs /proc/cpuinfo && echo pebs
   pebs

Thanks
-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-04  8:52   ` Francis Moreau
@ 2010-11-07 21:40     ` Frederic Weisbecker
  2010-11-09 11:07       ` Francis Moreau
  0 siblings, 1 reply; 16+ messages in thread
From: Frederic Weisbecker @ 2010-11-07 21:40 UTC (permalink / raw)
  To: Francis Moreau
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

On Thu, Nov 04, 2010 at 09:52:09AM +0100, Francis Moreau wrote:
> Frederic Weisbecker <fweisbec@gmail.com> writes:
> 
> > On Wed, Nov 03, 2010 at 08:28:59PM +0100, Francis Moreau wrote:
> >> Hello,
> >> 
> >> I'm trying to use perf-tools and also to learn some internals about
> >> them. So I prefer to ask all of them in one email.
> >> 
> >> The first one is about the list of pre-defined events given by
> >> perf-list. I couldn't find any documentations that describes these
> >> events so excuse me if the question is stupid.
> >
> >
> >
> > Sorry about that. We indeed need to improve a lot the documentation.
> > May be this particular part could come with the future sysfs exposure
> > of the events.
> >
> 
> No problem, but yes this part should be documented somewhere. And I
> think the syntax of event too, specially the modifier like 'u' or 'p'.



Ah that is documented in "man perf-list".



> 
> >> 
> >> What's the difference between 'cpu-clock' and 'task-clock' event ?
> >
> >
> > cpu-clock is based on the total time spent on the cpu. task-clock is
> > based only on the time spent on the profiled task, so that doesn't count
> > time spent on other tasks, it has a per thread granularity.
> 
> Ok, so 'cpu-clock' could have been named 'proc-clock' even though a task
> is a processus on Linux.



Well, this is a matter of opinion probably, I think cpu-clock defines
better its role.



> 
> [...]
> 
> >> The last question is about the source code annotation done by
> >> perf-report. I'm using it to locate the place in my code that generates
> >> the most data cache miss events. I can read this during a perf-report
> >> session:
> >> 
> >>    [...]
> >>     0.00 :           df215:       c3                      retq
> >>     0.00 :           df216:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
> >>     0.00 :           df21d:       00 00 00
> >>    10.00 :           df220:       48 8b 75 00             mov    0x0(%rbp),%rsi
> >>    80.00 :           df224:       48 89 df                mov    %rbx,%rdi
> >>     0.00 :           df227:       41 ff d4                callq  *%r12
> >>     0.00 :           df22a:       85 c0                   test   %eax,%eax
> >>    [...]
> >> 
> >> If I read the output correctly, most of the dcache misses are coming from
> >> 'mov %rbx, %rdi', and AFAIK this intruction can't generate any dcache
> >> miss. What am I missing ?
> >
> >
> > Perhaps you need pebs to get the very precise location on your event.
> >
> > perf stat -e cache-misses:up,l1d-loads-misses:up true
> >
> >
> > I think the more you add 'p', the more precise it is.
> > Like:
> >
> > 	perf stat -e cache-misses:uppp,l1d-loads-misses:uppp true
> >
> > Not sure how much it will accept though :)
> 
> Well it doesn't want one actually:
> 
>   $ perf stat -v -e cache-misses:up true
>   Error: counter 0, sys_perf_event_open() syscall returned with -1 (No
>   space left on device)
>   No permission to collect stats.
>   Consider tweaking /proc/sys/kernel/perf_event_paranoid.
> 
> Where can I find a description of PEB ?


I have the same problem. But running perf record with this :p
works for me. Which is what we want: pebs is useful for sampling,
not counting-only.

Ah and that won't work if you don't run some intel CPU I think.
Check you have PEBS support in /proc/cpuinfo


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-04 20:58         ` Francis Moreau
@ 2010-11-04 22:28           ` Victor Jimenez
  0 siblings, 0 replies; 16+ messages in thread
From: Victor Jimenez @ 2010-11-04 22:28 UTC (permalink / raw)
  To: Francis Moreau
  Cc: Reid Kleckner, Frederic Weisbecker, linux-kernel, Ingo Molnar,
	Peter Zijlstra, Arnaldo Carvalho de Melo, Stephane Eranian,
	linux-perf-users

On 11/04/2010 09:58 PM, Francis Moreau wrote:
> Francis Moreau<francis.moro@gmail.com>  writes:
>
>> Francis Moreau<francis.moro@gmail.com>  writes:
>>
> [...]
>
>>> How could I know the number of cache level on my cpu ?
>>>
>>> I tried:
>>>
>>>    $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>>>
>>>      Performance counter stats for 'true':
>>>
>>>                     802  cache-misses
>>>                     937  L1-dcache-load-misses
>>>
>>>             0.000996578  seconds time elapsed
>>>
>>>    $ perf stat -e cache-misses:u,L2-loads-misses:u true
>>>
>>>     Performance counter stats for 'true':
>>>
>>>                    788  cache-misses
>>>                     95  LLC-load-misses
>>>
>>>            0.001025423  seconds time elapsed
>>>
>>> So it looks like you're right: in my case I have this cache
>>> configuration:
>>>
>> oops sorry, I replied too early...
>>
>> so my cache configuration is:
>>
>>     L1 ->  L2 ->  LLC
>>
>> where L2 misses is given by: 'cache-misses' - 'LLC-load-misses'
>>
>> Is that correct ?
>>
>> If so, I found 'cache-misses' term very not intuitive IMHO, probably
>> because I'm not an expert in cpu caches...
> Well thinking more about it, the above is wrong and I'm lost.
>
> If 'cache-misses' is the last level cache misses then how to interpret
> these results ?
>
>    $ perf stat -e llc-load-misses:u,llc-store-misses:u true
>
>     Performance counter stats for 'true':
>
>                     94  LLC-load-misses
>                      0  LLC-store-misses
>
>            0.000981840  seconds time elapsed
>
>
>    $ perf stat -e cache-misses:u true
>
>     Performance counter stats for 'true':
>
>                    796  cache-misses
>
>            0.001345136  seconds time elapsed
>
> Here 'cache-misses' value is much more than llc misses one...
>
If you are measuring last level cache misses, I would recommend you to 
use a memory intensive application/benchmark instead of /bin/true, as 
otherwise there can be a significant variation between two runs.

Victor

-- 
------------------------------------------------------------------------

      Victor Jimenez Perez
      Barcelona Supercomputing Center
      Centro Nacional de Supercomputacion
      WWW: http://www.bsc.es
      e-mail: victor.javier@bsc.es

------------------------------------------------------------------------


WARNING / LEGAL TEXT: This message is intended only for the use of the
individual or entity to which it is addressed and may contain
information which is privileged, confidential, proprietary, or exempt
from disclosure under applicable law. If you are not the intended
recipient or the person responsible for delivering the message to the
intended recipient, you are strictly prohibited from disclosing,
distributing, copying, or in any way using this message. If you have
received this communication in error, please notify the sender and
destroy and delete any copies you may have received.

http://www.bsc.es/disclaimer.htm

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
       [not found]       ` <fa.YTQQoGhoS6d3BaZXcZMN+l9TojQ@ifi.uio.no>
@ 2010-11-04 20:58         ` Francis Moreau
  2010-11-04 22:28           ` Victor Jimenez
  0 siblings, 1 reply; 16+ messages in thread
From: Francis Moreau @ 2010-11-04 20:58 UTC (permalink / raw)
  To: Reid Kleckner
  Cc: Frederic Weisbecker, linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

Francis Moreau <francis.moro@gmail.com> writes:

> Francis Moreau <francis.moro@gmail.com> writes:
>

[...]

>>
>> How could I know the number of cache level on my cpu ?
>>
>> I tried:
>>
>>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>>
>>     Performance counter stats for 'true':
>>
>>                    802  cache-misses
>>                    937  L1-dcache-load-misses
>>
>>            0.000996578  seconds time elapsed
>>
>>   $ perf stat -e cache-misses:u,L2-loads-misses:u true
>>
>>    Performance counter stats for 'true':
>>
>>                   788  cache-misses
>>                    95  LLC-load-misses
>>
>>           0.001025423  seconds time elapsed
>>
>> So it looks like you're right: in my case I have this cache
>> configuration:
>>
>
> oops sorry, I replied too early...
>
> so my cache configuration is:
>
>    L1 -> L2 -> LLC
>
> where L2 misses is given by: 'cache-misses' - 'LLC-load-misses'
>
> Is that correct ?
>
> If so, I found 'cache-misses' term very not intuitive IMHO, probably
> because I'm not an expert in cpu caches...

Well thinking more about it, the above is wrong and I'm lost.

If 'cache-misses' is the last level cache misses then how to interpret
these results ?

  $ perf stat -e llc-load-misses:u,llc-store-misses:u true

   Performance counter stats for 'true':

                   94  LLC-load-misses         
                    0  LLC-store-misses        

          0.000981840  seconds time elapsed


  $ perf stat -e cache-misses:u true

   Performance counter stats for 'true':

                  796  cache-misses            

          0.001345136  seconds time elapsed

Here 'cache-misses' value is much more than llc misses one...

-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
       [not found] ` <fa.13KEqWk+Dk+jLLdFlAoZtQ2Vjuw@ifi.uio.no>
       [not found]   ` <fa.AGo9lmnVDcmFVUpOFG/kfd1aYfI@ifi.uio.no>
@ 2010-11-04  8:52   ` Francis Moreau
  2010-11-07 21:40     ` Frederic Weisbecker
  1 sibling, 1 reply; 16+ messages in thread
From: Francis Moreau @ 2010-11-04  8:52 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

Frederic Weisbecker <fweisbec@gmail.com> writes:

> On Wed, Nov 03, 2010 at 08:28:59PM +0100, Francis Moreau wrote:
>> Hello,
>> 
>> I'm trying to use perf-tools and also to learn some internals about
>> them. So I prefer to ask all of them in one email.
>> 
>> The first one is about the list of pre-defined events given by
>> perf-list. I couldn't find any documentations that describes these
>> events so excuse me if the question is stupid.
>
>
>
> Sorry about that. We indeed need to improve a lot the documentation.
> May be this particular part could come with the future sysfs exposure
> of the events.
>

No problem, but yes this part should be documented somewhere. And I
think the syntax of event too, specially the modifier like 'u' or 'p'.

>> 
>> What's the difference between 'cpu-clock' and 'task-clock' event ?
>
>
> cpu-clock is based on the total time spent on the cpu. task-clock is
> based only on the time spent on the profiled task, so that doesn't count
> time spent on other tasks, it has a per thread granularity.

Ok, so 'cpu-clock' could have been named 'proc-clock' even though a task
is a processus on Linux.


[...]

>> The last question is about the source code annotation done by
>> perf-report. I'm using it to locate the place in my code that generates
>> the most data cache miss events. I can read this during a perf-report
>> session:
>> 
>>    [...]
>>     0.00 :           df215:       c3                      retq
>>     0.00 :           df216:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>>     0.00 :           df21d:       00 00 00
>>    10.00 :           df220:       48 8b 75 00             mov    0x0(%rbp),%rsi
>>    80.00 :           df224:       48 89 df                mov    %rbx,%rdi
>>     0.00 :           df227:       41 ff d4                callq  *%r12
>>     0.00 :           df22a:       85 c0                   test   %eax,%eax
>>    [...]
>> 
>> If I read the output correctly, most of the dcache misses are coming from
>> 'mov %rbx, %rdi', and AFAIK this intruction can't generate any dcache
>> miss. What am I missing ?
>
>
> Perhaps you need pebs to get the very precise location on your event.
>
> perf stat -e cache-misses:up,l1d-loads-misses:up true
>
>
> I think the more you add 'p', the more precise it is.
> Like:
>
> 	perf stat -e cache-misses:uppp,l1d-loads-misses:uppp true
>
> Not sure how much it will accept though :)

Well it doesn't want one actually:

  $ perf stat -v -e cache-misses:up true
  Error: counter 0, sys_perf_event_open() syscall returned with -1 (No
  space left on device)
  No permission to collect stats.
  Consider tweaking /proc/sys/kernel/perf_event_paranoid.

Where can I find a description of PEB ?

Thanks
-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
       [not found]     ` <fa.ZajcSOe/t8/XBoLV1hZ7SjSJvtI@ifi.uio.no>
@ 2010-11-04  8:45       ` Francis Moreau
  0 siblings, 0 replies; 16+ messages in thread
From: Francis Moreau @ 2010-11-04  8:45 UTC (permalink / raw)
  To: Reid Kleckner
  Cc: Frederic Weisbecker, linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

Francis Moreau <francis.moro@gmail.com> writes:

> Reid Kleckner <reid.kleckner@gmail.com> writes:
>
>> On Wed, Nov 3, 2010 at 5:43 PM, Frederic Weisbecker <fweisbec@gmail.com> wrote:
>>>> What's exactly the 'cache-misses' event ? does it include both instructions
>>>> _and_ data cache misses ? both L1 and L2 caches ?
>>>>
>>
>>>> I was expecting so but the following command makes me wondering:
>>>>
>>>>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>>>>     Performance counter stats for 'true':
>>>>
>>>>                 763  cache-misses
>>>>                 874  L1-dcache-load-misses
>>>>
>>>>         0.000916609  seconds time elapsed
>>>>
>>>> Here cache-misses < L1-dcache-load-misses.
>>>
>>>
>>>
>>> Dunno, will let others answer.
>>
>> I think it corresponds to last level cache misses, which makes sense
>> here.  The difference in the two numbers represents hits to L2 (and L3
>> if it exists).
>
> How could I know the number of cache level on my cpu ?
>
> I tried:
>
>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>
>     Performance counter stats for 'true':
>
>                    802  cache-misses
>                    937  L1-dcache-load-misses
>
>            0.000996578  seconds time elapsed
>
>   $ perf stat -e cache-misses:u,L2-loads-misses:u true
>
>    Performance counter stats for 'true':
>
>                   788  cache-misses
>                    95  LLC-load-misses
>
>           0.001025423  seconds time elapsed
>
> So it looks like you're right: in my case I have this cache
> configuration:
>

oops sorry, I replied too early...

so my cache configuration is:

   L1 -> L2 -> LLC

where L2 misses is given by: 'cache-misses' - 'LLC-load-misses'

Is that correct ?

If so, I found 'cache-misses' term very not intuitive IMHO, probably
because I'm not an expert in cpu caches...

-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
       [not found]   ` <fa.AGo9lmnVDcmFVUpOFG/kfd1aYfI@ifi.uio.no>
@ 2010-11-04  8:34     ` Francis Moreau
  0 siblings, 0 replies; 16+ messages in thread
From: Francis Moreau @ 2010-11-04  8:34 UTC (permalink / raw)
  To: Reid Kleckner
  Cc: Frederic Weisbecker, linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

Reid Kleckner <reid.kleckner@gmail.com> writes:

> On Wed, Nov 3, 2010 at 5:43 PM, Frederic Weisbecker <fweisbec@gmail.com> wrote:
>>> What's exactly the 'cache-misses' event ? does it include both instructions
>>> _and_ data cache misses ? both L1 and L2 caches ?
>>>
>
>>> I was expecting so but the following command makes me wondering:
>>>
>>>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>>>     Performance counter stats for 'true':
>>>
>>>                 763  cache-misses
>>>                 874  L1-dcache-load-misses
>>>
>>>         0.000916609  seconds time elapsed
>>>
>>> Here cache-misses < L1-dcache-load-misses.
>>
>>
>>
>> Dunno, will let others answer.
>
> I think it corresponds to last level cache misses, which makes sense
> here.  The difference in the two numbers represents hits to L2 (and L3
> if it exists).

How could I know the number of cache level on my cpu ?

I tried:

  $ perf stat -e cache-misses:u,l1d-loads-misses:u true

    Performance counter stats for 'true':

                   802  cache-misses
                   937  L1-dcache-load-misses

           0.000996578  seconds time elapsed

  $ perf stat -e cache-misses:u,L2-loads-misses:u true

   Performance counter stats for 'true':

                  788  cache-misses
                   95  LLC-load-misses

          0.001025423  seconds time elapsed

So it looks like you're right: in my case I have this cache
configuration:










--
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-03 21:43 ` Frederic Weisbecker
@ 2010-11-03 22:15   ` Reid Kleckner
  0 siblings, 0 replies; 16+ messages in thread
From: Reid Kleckner @ 2010-11-03 22:15 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Francis Moreau, linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

On Wed, Nov 3, 2010 at 5:43 PM, Frederic Weisbecker <fweisbec@gmail.com> wrote:
>> What's exactly the 'cache-misses' event ? does it include both instructions
>> _and_ data cache misses ? both L1 and L2 caches ?
>>
>> I was expecting so but the following command makes me wondering:
>>
>>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>>     Performance counter stats for 'true':
>>
>>                 763  cache-misses
>>                 874  L1-dcache-load-misses
>>
>>         0.000916609  seconds time elapsed
>>
>> Here cache-misses < L1-dcache-load-misses.
>
>
>
> Dunno, will let others answer.

I think it corresponds to last level cache misses, which makes sense
here.  The difference in the two numbers represents hits to L2 (and L3
if it exists).

Reid

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: perf tools miscellaneous questions
  2010-11-03 19:28 Francis Moreau
@ 2010-11-03 21:43 ` Frederic Weisbecker
  2010-11-03 22:15   ` Reid Kleckner
  0 siblings, 1 reply; 16+ messages in thread
From: Frederic Weisbecker @ 2010-11-03 21:43 UTC (permalink / raw)
  To: Francis Moreau
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Stephane Eranian, linux-perf-users

On Wed, Nov 03, 2010 at 08:28:59PM +0100, Francis Moreau wrote:
> Hello,
> 
> I'm trying to use perf-tools and also to learn some internals about
> them. So I prefer to ask all of them in one email.
> 
> The first one is about the list of pre-defined events given by
> perf-list. I couldn't find any documentations that describes these
> events so excuse me if the question is stupid.



Sorry about that. We indeed need to improve a lot the documentation.
May be this particular part could come with the future sysfs exposure
of the events.



> 
> What's the difference between 'cpu-clock' and 'task-clock' event ?


cpu-clock is based on the total time spent on the cpu. task-clock is
based only on the time spent on the profiled task, so that doesn't count
time spent on other tasks, it has a per thread granularity.

(I might be somehow wrong in my explanation).



> 
> What's exactly the 'cache-misses' event ? does it include both instructions
> _and_ data cache misses ? both L1 and L2 caches ?
> 
> I was expecting so but the following command makes me wondering:
> 
>   $ perf stat -e cache-misses:u,l1d-loads-misses:u true
>     Performance counter stats for 'true':
> 
>                 763  cache-misses            
>                 874  L1-dcache-load-misses   
> 
>         0.000916609  seconds time elapsed
> 
> Here cache-misses < L1-dcache-load-misses.



Dunno, will let others answer.



> The last question is about the source code annotation done by
> perf-report. I'm using it to locate the place in my code that generates
> the most data cache miss events. I can read this during a perf-report
> session:
> 
>    [...]
>     0.00 :           df215:       c3                      retq
>     0.00 :           df216:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>     0.00 :           df21d:       00 00 00
>    10.00 :           df220:       48 8b 75 00             mov    0x0(%rbp),%rsi
>    80.00 :           df224:       48 89 df                mov    %rbx,%rdi
>     0.00 :           df227:       41 ff d4                callq  *%r12
>     0.00 :           df22a:       85 c0                   test   %eax,%eax
>    [...]
> 
> If I read the output correctly, most of the dcache misses are coming from
> 'mov %rbx, %rdi', and AFAIK this intruction can't generate any dcache
> miss. What am I missing ?


Perhaps you need pebs to get the very precise location on your event.

perf stat -e cache-misses:up,l1d-loads-misses:up true


I think the more you add 'p', the more precise it is.
Like:

	perf stat -e cache-misses:uppp,l1d-loads-misses:uppp true

Not sure how much it will accept though :)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* perf tools miscellaneous questions
@ 2010-11-03 19:28 Francis Moreau
  2010-11-03 21:43 ` Frederic Weisbecker
  0 siblings, 1 reply; 16+ messages in thread
From: Francis Moreau @ 2010-11-03 19:28 UTC (permalink / raw)
  To: linux-kernel

Hello,

I'm trying to use perf-tools and also to learn some internals about
them. So I prefer to ask all of them in one email.

The first one is about the list of pre-defined events given by
perf-list. I couldn't find any documentations that describes these
events so excuse me if the question is stupid.

What's the difference between 'cpu-clock' and 'task-clock' event ?

What's exactly the 'cache-misses' event ? does it include both instructions
_and_ data cache misses ? both L1 and L2 caches ?

I was expecting so but the following command makes me wondering:

  $ perf stat -e cache-misses:u,l1d-loads-misses:u true
    Performance counter stats for 'true':

                763  cache-misses            
                874  L1-dcache-load-misses   

        0.000916609  seconds time elapsed

Here cache-misses < L1-dcache-load-misses.

The last question is about the source code annotation done by
perf-report. I'm using it to locate the place in my code that generates
the most data cache miss events. I can read this during a perf-report
session:

   [...]
    0.00 :           df215:       c3                      retq
    0.00 :           df216:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
    0.00 :           df21d:       00 00 00
   10.00 :           df220:       48 8b 75 00             mov    0x0(%rbp),%rsi
   80.00 :           df224:       48 89 df                mov    %rbx,%rdi
    0.00 :           df227:       41 ff d4                callq  *%r12
    0.00 :           df22a:       85 c0                   test   %eax,%eax
   [...]

If I read the output correctly, most of the dcache misses are coming from
'mov %rbx, %rdi', and AFAIK this intruction can't generate any dcache
miss. What am I missing ?

Thanks.
-- 
Francis

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2010-11-09 11:07 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <fa.SSgtQesEhEQa5DUYUwBV3fWtoV4@ifi.uio.no>
     [not found] ` <fa.dD5ur5Phqa1TLmYBE2NVKCQMjTw@ifi.uio.no>
     [not found]   ` <fa.Xj1lA7n6nIJYL40CeRDpQzSKlfc@ifi.uio.no>
     [not found]     ` <fa.xcyA+VzIXesq6qsPU6ADM4xdCKY@ifi.uio.no>
     [not found]       ` <fa.MOg61Pcfdp2SJnwM2GFdOxP+xt0@ifi.uio.no>
     [not found]         ` <fa.4sHfhlc/fMhpYgKda4IfUHZ7jMY@ifi.uio.no>
2010-11-05 12:38           ` perf tools miscellaneous questions Francis Moreau
2010-11-05 14:02             ` Vince Weaver
2010-11-06 14:44               ` Francis Moreau
2010-11-06 20:50                 ` Vince Weaver
2010-11-06 20:52                   ` Vince Weaver
2010-11-08 19:43                   ` Francis Moreau
     [not found] <fa.eqFHAk86WhpTuYclHhngn7QZr8Y@ifi.uio.no>
     [not found] ` <fa.X++YRAJg+rmPtm3nmroZZoNU7u8@ifi.uio.no>
     [not found]   ` <fa.Elk8wOfBHRdKtkHIjP9hOtzVCgQ@ifi.uio.no>
     [not found]     ` <fa.U3fdWUGXguguIIyQ4v66/uKOhus@ifi.uio.no>
     [not found]       ` <fa.YTQQoGhoS6d3BaZXcZMN+l9TojQ@ifi.uio.no>
2010-11-04 20:58         ` Francis Moreau
2010-11-04 22:28           ` Victor Jimenez
     [not found] <fa.yHA7Aw03llqLWxPVYRnHvK5/dT8@ifi.uio.no>
     [not found] ` <fa.13KEqWk+Dk+jLLdFlAoZtQ2Vjuw@ifi.uio.no>
     [not found]   ` <fa.AGo9lmnVDcmFVUpOFG/kfd1aYfI@ifi.uio.no>
2010-11-04  8:34     ` Francis Moreau
2010-11-04  8:52   ` Francis Moreau
2010-11-07 21:40     ` Frederic Weisbecker
2010-11-09 11:07       ` Francis Moreau
     [not found] <fa.AyvjD8RxwvZsnL5ZXcZ+OzALKY8@ifi.uio.no>
     [not found] ` <fa.wlHJxDLDciTHF6/icJo+JfjJPus@ifi.uio.no>
     [not found]   ` <fa.8PQyp14JyjNgKJB4NUWsi+YoZBM@ifi.uio.no>
     [not found]     ` <fa.ZajcSOe/t8/XBoLV1hZ7SjSJvtI@ifi.uio.no>
2010-11-04  8:45       ` Francis Moreau
2010-11-03 19:28 Francis Moreau
2010-11-03 21:43 ` Frederic Weisbecker
2010-11-03 22:15   ` Reid Kleckner

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).