aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-script.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2018-09-20 14:05:38 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2018-10-24 14:29:55 -0400
commitd1b1552e15d41297abcaf3812378e3391d44fa6b (patch)
treeb311e7121df9c935a4de6290b08564cdfeb3a39b /tools/perf/builtin-script.c
parent4eb068157121939f4bc16256a37bcd88f5554123 (diff)
tools script: Add --call-trace and --call-ret-trace
Add short cut options to print PT call trace and call-ret-trace, for calls and call and returns. Roughly corresponds to ftrace function tracer and function graph tracer. Just makes these common use cases nicer to use. % perf record -a -e intel_pt// sleep 1 % perf script --call-trace perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_pmu_enable perf 900 [000] 194167.205652203: ([kernel.kallsyms]) __x86_indirect_thunk_rax perf 900 [000] 194167.205652203: ([kernel.kallsyms]) event_filter_match perf 900 [000] 194167.205652203: ([kernel.kallsyms]) group_sched_in perf 900 [000] 194167.205652203: ([kernel.kallsyms]) __x86_indirect_thunk_rax perf 900 [000] 194167.205652203: ([kernel.kallsyms]) event_sched_in.isra.107 perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_event_set_state.part.71 perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_event_update_time perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_pmu_disable perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_log_itrace_start perf 900 [000] 194167.205652203: ([kernel.kallsyms]) __x86_indirect_thunk_rax perf 900 [000] 194167.205652203: ([kernel.kallsyms]) perf_event_update_userpage % perf script --call-ret-trace perf 900 [000] 194167.205652203: tr strt ([unknown]) pt_config perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) pt_config perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) pt_event_add perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) perf_pmu_enable perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) perf_pmu_nop_void perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) event_sched_in.isra.107 perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) __x86_indirect_thunk_rax perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) perf_pmu_nop_int perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) group_sched_in perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) event_filter_match perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) event_filter_match perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) group_sched_in perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) __x86_indirect_thunk_rax perf 900 [000] 194167.205652203: return ([kernel.kallsyms]) perf_pmu_nop_txn perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) event_sched_in.isra.107 perf 900 [000] 194167.205652203: call ([kernel.kallsyms]) perf_event_set_state.part.71 Signed-off-by: Andi Kleen <ak@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Tested-by: Leo Yan <leo.yan@linaro.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Kim Phillips <kim.phillips@arm.com> Link: http://lkml.kernel.org/r/20180920180540.14039-4-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-script.c')
-rw-r--r--tools/perf/builtin-script.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 6099c722a679..566e1450898a 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -3122,6 +3122,26 @@ static int parse_xed(const struct option *opt __maybe_unused,
3122 return 0; 3122 return 0;
3123} 3123}
3124 3124
3125static int parse_call_trace(const struct option *opt __maybe_unused,
3126 const char *str __maybe_unused,
3127 int unset __maybe_unused)
3128{
3129 parse_output_fields(NULL, "-ip,-addr,-event,-period,+callindent", 0);
3130 itrace_parse_synth_opts(opt, "cewp", 0);
3131 nanosecs = true;
3132 return 0;
3133}
3134
3135static int parse_callret_trace(const struct option *opt __maybe_unused,
3136 const char *str __maybe_unused,
3137 int unset __maybe_unused)
3138{
3139 parse_output_fields(NULL, "-ip,-addr,-event,-period,+callindent,+flags", 0);
3140 itrace_parse_synth_opts(opt, "crewp", 0);
3141 nanosecs = true;
3142 return 0;
3143}
3144
3125int cmd_script(int argc, const char **argv) 3145int cmd_script(int argc, const char **argv)
3126{ 3146{
3127 bool show_full_info = false; 3147 bool show_full_info = false;
@@ -3213,6 +3233,10 @@ int cmd_script(int argc, const char **argv)
3213 "Decode instructions from itrace", parse_insn_trace), 3233 "Decode instructions from itrace", parse_insn_trace),
3214 OPT_CALLBACK_OPTARG(0, "xed", NULL, NULL, NULL, 3234 OPT_CALLBACK_OPTARG(0, "xed", NULL, NULL, NULL,
3215 "Run xed disassembler on output", parse_xed), 3235 "Run xed disassembler on output", parse_xed),
3236 OPT_CALLBACK_OPTARG(0, "call-trace", &itrace_synth_opts, NULL, NULL,
3237 "Decode calls from from itrace", parse_call_trace),
3238 OPT_CALLBACK_OPTARG(0, "call-ret-trace", &itrace_synth_opts, NULL, NULL,
3239 "Decode calls and returns from itrace", parse_callret_trace),
3216 OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]", 3240 OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]",
3217 "Stop display of callgraph at these symbols"), 3241 "Stop display of callgraph at these symbols"),
3218 OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"), 3242 OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"),