Re: disabling group leader perf_event

From: Peter Zijlstra
Date: Mon Sep 06 2010 - 08:30:16 EST


On Mon, 2010-09-06 at 14:58 +0300, Avi Kivity wrote:
> On 09/06/2010 02:54 PM, Peter Zijlstra wrote:
> >
> >> Basically, to read() all events in one go. I have many of them.
> >>
> >> My current problem is that I have an event (kvm_exit) which I want to
> >> drill down by looking at a field (exit_reason). So I create lots of
> >> separate perf_events with a filter for each reason:
> >> kvm_exit(exit_reason==0), kvm_exit(exit_reason==1), etc. But filters
> >> are fairly slow (can have ~60 such events on AMD), so I want to make
> >> this drill-down optional.
> > Yeah, filters suck.
>
> Any idea why? I saw nothing obvious in the code, except that there is
> lots of it.

It filters after it does all the hard work of creating the trace event,
instead of before.

> > So what you're basically trying to do is create some histogram of
> > exit_reason?
>
> Yes, exactly.

One thing I thought of, you can use the unfiltered kvm_exit event as
leader, that will give you the total number of events, which, esp. when
you create partial histograms, is useful to figure out how much you
missed.

You can individually disable/enable !leader siblings.

> (one other issue - right now I'm using cpu events. If I switch to task
> events, I lose events generated by workqueues, yes?)

Right, those have their own tasks.
--
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/