2014-06-24 17:36:29

by Luís Matallui

[permalink] [raw]
Subject: [PERF_EVENT 3.11] Group Multiplexing not Working Properly

Hi,

I am trying to configure 8 events in a machine which supports only 4 (so, using multiplexing). I tried different approaches:

1) Configure 8 events independently (works as expected)
2) Configure 2 event-sets of 4 events each in counting mode (works as expected)
3) Configure 2 event-sets of 4 events each in sampling mode (not working right)

In case 3) I also tried different approaches:

3.a) 1 ring-buffer for each event-set and a callback for the POLL signal
- only the first ring-buffer was detecting samples
- the second ring-buffer was empty

3.b) 1 ring-buffer shared between event-sets (using PERF_EVENT_IOC_SET_OUTPUT)
- both event-sets were writing to the ring-buffer
- 1st event-set only writes 2 samples while 2nd event-set writes like 20+ samples
- samples from 1st event-set report time_enabled=time_running while samples from 2nd don?t

Moreover, in both cases the wakeup_events parameter is not working.
I believe there must be some programming bugs in perf_event while profiling in sampling mode with multiple event-sets (groups).

Regards,
matallui


2014-06-27 14:17:24

by Stephane Eranian

[permalink] [raw]
Subject: Re: [PERF_EVENT 3.11] Group Multiplexing not Working Properly

Hi,

On Tue, Jun 24, 2014 at 7:36 PM, Luís Taniça <[email protected]> wrote:
> Hi,
>
> I am trying to configure 8 events in a machine which supports only 4 (so, using multiplexing). I tried different approaches:
>
> 1) Configure 8 events independently (works as expected)
> 2) Configure 2 event-sets of 4 events each in counting mode (works as expected)
> 3) Configure 2 event-sets of 4 events each in sampling mode (not working right)
>
What do it mean 'not working' in 3)?
Are you using perf record or your own code?

I think it would help if you could share the exact setup, i.e., the various
struct perf_event_attr structs.

> In case 3) I also tried different approaches:
>
> 3.a) 1 ring-buffer for each event-set and a callback for the POLL signal
> - only the first ring-buffer was detecting samples
> - the second ring-buffer was empty
>
> 3.b) 1 ring-buffer shared between event-sets (using PERF_EVENT_IOC_SET_OUTPUT)
> - both event-sets were writing to the ring-buffer
> - 1st event-set only writes 2 samples while 2nd event-set writes like 20+ samples
> - samples from 1st event-set report time_enabled=time_running while samples from 2nd don’t
>
> Moreover, in both cases the wakeup_events parameter is not working.
> I believe there must be some programming bugs in perf_event while profiling in sampling mode with multiple event-sets (groups).
>
> Regards,
> matallui
>
>