[lkml]   [2009]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subjectperf_counters issue with PERF_SAMPLE_GROUP

It seems to me there is a problem with the group counter values
when you use PERF_SAMPLE_GROUP. The counts are bogus
for all events.

Test case is pretty simple:
- single group, 2 events
- sampling on PERF_COUNT_HW_CYCLES
- other event is PERF_COUNT_HW_CYCLES
- no inheritance
- single thread
- using sampling in one shot mode with PERF_COUNTER_IOC_REFRESH
- all events but leader start with disabled = 0 (i.e., enabled)
- sampling period is 240000000 (cycles)

Notification 1: ip=0x401300 39100608 PERF_COUNT_HW_CPU_CYCLES (12)
Notification 2: ip=0x401300 17991616 PERF_COUNT_HW_CPU_CYCLES (12)
Notification 3: ip=0x401300 17981248 PERF_COUNT_HW_CPU_CYCLES (12)
Notification 4: ip=0x401300 9409478912 PERF_COUNT_HW_CPU_CYCLES (12)

I would expect the value for the 2nd event to be close to 240000000.
But instead,
it is going up and down. The IP, nr and id (12) fields are correct, so
the parsing of
the buffer is correct. This is with the latest from Linus's 2.6.31-rc5.

Related to PERF_SAMPLE_GROUP, I believe there is some information missing.
You need to provide the TIMING information because in the case of SAMPLE_GROUP
you'd like to be able to scale the values of the counters you are
collecting. And you
need the timing at the moment, the sample was recorded not later.

 \ /
  Last update: 2009-08-11 17:43    [W:0.051 / U:0.552 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site