Re: [RFC 3/4] perf, ftrace: Add new perf ioctl for function tracefilter

From: Jiri Olsa
Date: Tue Jul 19 2011 - 05:57:50 EST


On Mon, Jul 18, 2011 at 05:12:33PM +0200, Frederic Weisbecker wrote:
> On Mon, Jul 11, 2011 at 03:22:55PM +0200, Jiri Olsa wrote:
> > As the amount of kernel functions obtained by the ftrace:function tracepoint
> > is quite big, it's desirable to be able to set the filter on the ftrace
> > level.
> >
> > Added PERF_EVENT_IOC_SET_FTRACE ioctl to be able to specify function filter
> > for perf event. The interface is the same as for the set_ftrace_filter file.
> >
> > Also the same string parser is used as for the set_ftrace_filter file.
>
> I'm not sure I understand why an ioctl is needed for that.
> Why not using the ftrace filter?
>
> The first idea was to do something like this:
>
> ip == func1 || ip == func2 || ....

The part where I got stuck is when you start to combine the fields
in the filter like:

ip == func1 || ip_parent != func2
ip == func1 || (ip == func2 && ip_parent != func3)

Which is ok when all functions are enabled and ip/parent_ip fields
are treated as values. But I'd need enable proper set of functions
based on above filter parsing.. which might not be that easy :)

So I thought it'd be easier to have the filter as above,
plus you could specify the amount of traced functions with
ioctl command.

>
> But that makes a too long expression. So I thought we
> could bring support for the "+" operator and have expressions
> like:
>
> ip == func1 + func2 + func3 + ....
>
> ip == !func1

So would you like to have just simple filter for function event?
(embedded into the current event filter..) like:

ip == func1 + func2 + func3 +

Support just one 'ip' field and whatever we got in the parameter
we put into the ftrace filter.. ?

thanks,
jirka
--
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/