Re: [PATCH 0/6] perf trace: Add filter support

Frederic Weisbecker
2009-09-08T00:02:23Z

On Mon, Sep 07, 2009 at 04:11:57PM +0800, Li Zefan wrote:
> This patchset adds filter support for perf counter, so not all
> profile events are recorded but only those match the filters
> we set.

Thanks a lot for this work!

> An example:
>
> #./perf record -f -e irq:irq_handler_entry:irq==18:record
> or
> #./perf record -f -e irq:irq_handler_entry:irq==18 -R
> ^C

We may want to write complex filters. While looking at this patchset,
that seems possible this way, but the raw line may become unreadable:

perf record -f -e irq:irq_handler_entry:"irq==18 && (name == 'foo' || bar == 'blah')":record

May be we should add an option to let one also set the filters seperately then
we could do:

perf record -f -e -R irq:irq_handler_entry --filter "irq==18 && (name == 'foo' || bar == 'blah')"

Hmm.

> # ./perf trace
> version = 0.5
> perf-4303 ... irq_handler_entry: irq=18 handler=eth0
> init-0 ... irq_handler_entry: irq=18 handler=eth0
> init-0 ... irq_handler_entry: irq=18 handler=eth0
> init-0 ... irq_handler_entry: irq=18 handler=eth0
> init-0 ... irq_handler_entry: irq=18 handler=eth0
>
> ---
> include/linux/ftrace_event.h | 19 +++-
> include/linux/perf_counter.h | 1 +
> include/linux/syscalls.h | 14 ++-
> include/trace/ftrace.h | 10 +-
> kernel/perf_counter.c | 40 ++++++-
> kernel/trace/trace.h | 9 +-
> kernel/trace/trace_event_profile.c | 18 +++
> kernel/trace/trace_events_filter.c | 247 +++++++++++++++++++++---------------
> kernel/trace/trace_syscalls.c | 9 +-
> tools/perf/builtin-record.c | 12 ++
> tools/perf/util/parse-events.c | 48 ++++++-
> tools/perf/util/parse-events.h | 1 +
> 12 files changed, 303 insertions(+), 125 deletions(-)
>