perf script: Add comm filtering option
PATCH v3 1/1 perf script: Add comm filtering option
Allows collecting events system wide and then pulling out events for a specific task name(s). e.g,
perf script -c gnome-shell,gnome-terminal
Applies on top of:
https://lkml.org/lkml/2011/11/13/74
v2->v3
- update Documentation
v1->v2
- use comm_list from symbol_conf
Signed-off-by David Ahern <[email protected]>
--- tools/perf/Documentation/perf-script.txt | 5 +++++ tools/perf/builtin-script.c | 12 ++++++++++++ 2 files changed, 17 insertions(+), 0 deletions(-)
tools/perf/Documentation/perf-script.txt +5 -0
@@ -188,6 +188,11 @@ OPTIONS CPUs are specified with -: 0-2. Default is to report samples on all CPUs. +-c:: +--comms=:: + Only display events for these comms. CSV that understands + file://filename entries. + -I:: --show-info:: Display extended information about the perf.data file. This adds
tools/perf/builtin-script.c +12 -0
@@ -440,6 +440,7 @@ static int process_sample_event(union perf_event *event, struct perf_session *session) {struct thread *thread =perf_session__findnew (session, event->ip.pid); +struct addr_location al;if (thread ==NULL ) { pr_debug("problem processing %d event, skipping it.\n",
@@ -458,6 +459,15 @@ static int process_sample_event(union perf_event *event,return 0 ; } +if (perf_event__preprocess_sample (event, session, &al, sample,0 ) <0 ) { +pr_err ("problem processing %d event, skipping it.\n" , + event->header.type); +return -1 ; + } + +if (al.filtered) +return 0 ; +if (cpu_list && !test_bit (sample->cpu, cpu_bitmap))return 0 ;
@@ -1084,6 +1094,8 @@ static const struct option options[] = { "comma separated output fields prepend with 'type:'. Valid types: hw,sw,trace,raw. Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,addr", parse_output_fields),OPT_STRING ('C' ,"cpu" , &cpu_list,"cpu" ,"list of cpus to profile" ), +OPT_STRING ('c' ,"comms" , &symbol_conf.comm_list_str,"comm[,comm...]" , +"only display events for these comms" ),OPT_BOOLEAN ('I' ,"show-info" , &show_full_info,"display extended information from perf.data file" ),OPT_END ()
Signature · 1 line
1.7.7.1
Commit-ID: e7984b7bee2fca8f582f5bc2bf1e6c93420a5dd5 Gitweb: http://git.kernel.org/tip/e7984b7bee2fca8f582f5bc2bf1e6c93420a5dd5 Author: David Ahern <[email protected]> AuthorDate: Mon, 21 Nov 2011 10:02:52 -0700 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 28 Nov 2011 11:48:23 -0200
perf script: Add comm filtering option
Allows collecting events system wide and then pulling out events for a specific task name(s). e.g,
perf script -c gnome-shell,gnome-terminal
Applies on top of:
https://lkml.org/lkml/2011/11/13/74
v2->v3
- update Documentation
v1->v2
- use comm_list from symbol_conf
Cc Frederic Weisbecker <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Signed-off-by David Ahern <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/Documentation/perf-script.txt | 5 +++++ tools/perf/builtin-script.c | 12 ++++++++++++ 2 files changed, 17 insertions(+), 0 deletions(-)
tools/perf/Documentation/perf-script.txt +5 -0
@@ -188,6 +188,11 @@ OPTIONS CPUs are specified with -: 0-2. Default is to report samples on all CPUs. +-c:: +--comms=:: + Only display events for these comms. CSV that understands + file://filename entries. + -I:: --show-info:: Display extended information about the perf.data file. This adds
tools/perf/builtin-script.c +12 -0
@@ -441,6 +441,7 @@ static int process_sample_event(struct perf_tool *tool __used,struct perf_evsel *evsel, struct machine *machine) { + struct addr_location al;struct thread *thread =machine__findnew_thread (machine, event->ip.pid);if (thread ==NULL ) {
@@ -460,6 +461,15 @@ static int process_sample_event(struct perf_tool *tool __used,return 0 ; } +if (perf_event__preprocess_sample (event, machine, &al, sample,0 ) <0 ) { +pr_err ("problem processing %d event, skipping it.\n" , + event->header.type); +return -1 ; + } + +if (al.filtered) +return 0 ; +if (cpu_list && !test_bit (sample->cpu, cpu_bitmap))return 0 ;
@@ -1086,6 +1096,8 @@ static const struct option options[] = { "comma separated output fields prepend with 'type:'. Valid types: hw,sw,trace,raw. Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,addr", parse_output_fields),OPT_STRING ('C' ,"cpu" , &cpu_list,"cpu" ,"list of cpus to profile" ), +OPT_STRING ('c' ,"comms" , &symbol_conf.comm_list_str,"comm[,comm...]" , +"only display events for these comms" ),OPT_BOOLEAN ('I' ,"show-info" , &show_full_info,"display extended information from perf.data file" ),OPT_END ()