perf_counters issue with PERF_SAMPLE_GROUP

From: stephane eranian
Date: Tue Aug 11 2009 - 11:41:15 EST


Hi,

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
- leader has SAMPLE_IP|SAMPLE_GROUP
- 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/