Re: [PATCH 4/4][RFC] perf_counter: Allow sharing of output channels

From: Ingo Molnar
Date: Thu Aug 20 2009 - 06:28:18 EST



* stephane eranian <eranian@xxxxxxxxxxxxxx> wrote:

> On Wed, Aug 19, 2009 at 2:56 PM, Peter Zijlstra<a.p.zijlstra@xxxxxxxxx> wrote:
> > On Wed, 2009-08-19 at 22:36 +1000, Paul Mackerras wrote:
> >> Peter Zijlstra writes:
> >>
> >> > Provide the ability to configure a counter to send
> >> > its output to another (already existing) counter's
> >> > output stream.
> >>
> >> What sort of thing might this be useful for?
> >
> > Some people complained that its tedious to mmap() for
> > every counter and would like to share the mmap()
> > output buffer between counters.
> >
>
> > This saves on address space and mlock budget and I
> > guess fd management logic.
>
> Interesting to see, you seem to have changed your mind
> on this. I recall pointing this out in my early
> comments.

Btw., did we strongly oppose the notion? The mmap output
buffers were always multi-event in essence - just by
virtue of the automatic events such as task creation,
mmap, etc.

> But anyway, here are some more comments:
>
> - how does this work with the remapped counts?
> Probably only see the count for the target, i.e.,
> output, event

if you want to recover the momentary index for RDPC you
need to mmap the counter(s) you are interested in, to get
to the header->index value.

So you can create these counters with 1 pages only (one
is the header) - and then remap the output to the primary
counter's output buffer.

> - if samples from multiple events end up in the same
> buffer, how do I tell them apart, i.e., how do I
> know sample X came from event A, sample X from
> event B? This may be useful to detect patterns.

Via PERF_SAMPLE_ID. That saves the counter ID into the
event so it can be demultiplexed later on.

Ingo
--
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/