diff options
author | Jiri Olsa <jolsa@kernel.org> | 2014-08-25 10:45:42 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-10-17 14:21:30 -0400 |
commit | 535aeaae7de821ba5d43ee2a204ee667ca95aae4 (patch) | |
tree | d683ec963a3c99962aa1928b666ae456ecf62220 /tools | |
parent | f14d570785e6760284a9849f9bafd0a9825a1a25 (diff) |
perf script: Add period data column
Adding period data column to be displayed in perf script. It's possible
to get period values using -f option, like:
$ perf script -f comm,tid,time,period,ip,sym,dso
:26019 26019 52414.329088: 3707 ffffffff8105443a native_write_msr_safe ([kernel.kallsyms])
:26019 26019 52414.329088: 44 ffffffff8105443a native_write_msr_safe ([kernel.kallsyms])
:26019 26019 52414.329093: 1987 ffffffff8105443a native_write_msr_safe ([kernel.kallsyms])
:26019 26019 52414.329093: 6 ffffffff8105443a native_write_msr_safe ([kernel.kallsyms])
ls 26019 52414.329442: 537558 3407c0639c _dl_map_object_from_fd (/usr/lib64/ld-2.17.so)
ls 26019 52414.329442: 2099 3407c0639c _dl_map_object_from_fd (/usr/lib64/ld-2.17.so)
ls 26019 52414.330181: 1242100 34080917bb get_next_seq (/usr/lib64/libc-2.17.so)
ls 26019 52414.330181: 3774 34080917bb get_next_seq (/usr/lib64/libc-2.17.so)
ls 26019 52414.331427: 1083662 ffffffff810c7dc2 update_curr ([kernel.kallsyms])
ls 26019 52414.331427: 360 ffffffff810c7dc2 update_curr ([kernel.kallsyms])
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: David Ahern <dsahern@gmail.com>
Cc: "Jen-Cheng(Tommy) Huang" <tommy24@gatech.edu>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jen-Cheng(Tommy) Huang <tommy24@gatech.edu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1408977943-16594-9-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/Documentation/perf-script.txt | 2 | ||||
-rw-r--r-- | tools/perf/builtin-script.c | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt index 5a0160d359a1..21494806c0ab 100644 --- a/tools/perf/Documentation/perf-script.txt +++ b/tools/perf/Documentation/perf-script.txt | |||
@@ -115,7 +115,7 @@ OPTIONS | |||
115 | -f:: | 115 | -f:: |
116 | --fields:: | 116 | --fields:: |
117 | Comma separated list of fields to print. Options are: | 117 | Comma separated list of fields to print. Options are: |
118 | comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff, srcline. | 118 | comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff, srcline, period. |
119 | Field list can be prepended with the type, trace, sw or hw, | 119 | Field list can be prepended with the type, trace, sw or hw, |
120 | to indicate to which event type the field list applies. | 120 | to indicate to which event type the field list applies. |
121 | e.g., -f sw:comm,tid,time,ip,sym and -f trace:time,cpu,trace | 121 | e.g., -f sw:comm,tid,time,ip,sym and -f trace:time,cpu,trace |
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 6b4925f65bf0..0659dff4a21d 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c | |||
@@ -44,6 +44,7 @@ enum perf_output_field { | |||
44 | PERF_OUTPUT_ADDR = 1U << 10, | 44 | PERF_OUTPUT_ADDR = 1U << 10, |
45 | PERF_OUTPUT_SYMOFFSET = 1U << 11, | 45 | PERF_OUTPUT_SYMOFFSET = 1U << 11, |
46 | PERF_OUTPUT_SRCLINE = 1U << 12, | 46 | PERF_OUTPUT_SRCLINE = 1U << 12, |
47 | PERF_OUTPUT_PERIOD = 1U << 13, | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | struct output_option { | 50 | struct output_option { |
@@ -63,6 +64,7 @@ struct output_option { | |||
63 | {.str = "addr", .field = PERF_OUTPUT_ADDR}, | 64 | {.str = "addr", .field = PERF_OUTPUT_ADDR}, |
64 | {.str = "symoff", .field = PERF_OUTPUT_SYMOFFSET}, | 65 | {.str = "symoff", .field = PERF_OUTPUT_SYMOFFSET}, |
65 | {.str = "srcline", .field = PERF_OUTPUT_SRCLINE}, | 66 | {.str = "srcline", .field = PERF_OUTPUT_SRCLINE}, |
67 | {.str = "period", .field = PERF_OUTPUT_PERIOD}, | ||
66 | }; | 68 | }; |
67 | 69 | ||
68 | /* default set to maintain compatibility with current format */ | 70 | /* default set to maintain compatibility with current format */ |
@@ -229,6 +231,11 @@ static int perf_evsel__check_attr(struct perf_evsel *evsel, | |||
229 | PERF_OUTPUT_CPU)) | 231 | PERF_OUTPUT_CPU)) |
230 | return -EINVAL; | 232 | return -EINVAL; |
231 | 233 | ||
234 | if (PRINT_FIELD(PERIOD) && | ||
235 | perf_evsel__check_stype(evsel, PERF_SAMPLE_PERIOD, "PERIOD", | ||
236 | PERF_OUTPUT_PERIOD)) | ||
237 | return -EINVAL; | ||
238 | |||
232 | return 0; | 239 | return 0; |
233 | } | 240 | } |
234 | 241 | ||
@@ -448,6 +455,9 @@ static void process_event(union perf_event *event, struct perf_sample *sample, | |||
448 | 455 | ||
449 | print_sample_start(sample, thread, evsel); | 456 | print_sample_start(sample, thread, evsel); |
450 | 457 | ||
458 | if (PRINT_FIELD(PERIOD)) | ||
459 | printf("%10" PRIu64 " ", sample->period); | ||
460 | |||
451 | if (PRINT_FIELD(EVNAME)) { | 461 | if (PRINT_FIELD(EVNAME)) { |
452 | const char *evname = perf_evsel__name(evsel); | 462 | const char *evname = perf_evsel__name(evsel); |
453 | printf("%s: ", evname ? evname : "[unknown]"); | 463 | printf("%s: ", evname ? evname : "[unknown]"); |
@@ -1543,7 +1553,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) | |||
1543 | "comma separated output fields prepend with 'type:'. " | 1553 | "comma separated output fields prepend with 'type:'. " |
1544 | "Valid types: hw,sw,trace,raw. " | 1554 | "Valid types: hw,sw,trace,raw. " |
1545 | "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso," | 1555 | "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso," |
1546 | "addr,symoff", parse_output_fields), | 1556 | "addr,symoff,period", parse_output_fields), |
1547 | OPT_BOOLEAN('a', "all-cpus", &system_wide, | 1557 | OPT_BOOLEAN('a', "all-cpus", &system_wide, |
1548 | "system-wide collection from all CPUs"), | 1558 | "system-wide collection from all CPUs"), |
1549 | OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", | 1559 | OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", |