From: leo.yan@linaro.org
To: Andi Kleen <andi@firstfloor.org>
Cc: acme@kernel.org, jolsa@kernel.org, linux-kernel@vger.kernel.org,
Andi Kleen <ak@linux.intel.com>,
Mathieu Poirier <mathieu.poirier@linaro.org>
Subject: Re: [PATCH v6 3/5] tools, perf, script: Add --call-trace and --call-ret-trace
Date: Fri, 28 Sep 2018 18:23:31 +0800 [thread overview]
Message-ID: <20180928102331.GA15533@leoy-ThinkPad-X240s> (raw)
In-Reply-To: <20180920180540.14039-4-andi@firstfloor.org>
Hi Andi,
On Thu, Sep 20, 2018 at 11:05:38AM -0700, Andi Kleen wrote:
> From: Andi Kleen <ak@linux.intel.com>
>
> 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>
> ---
> v2: Print errors, power, ptwrite too
> ---
> tools/perf/Documentation/perf-script.txt | 7 +++++++
> tools/perf/builtin-script.c | 24 ++++++++++++++++++++++++
> 2 files changed, 31 insertions(+)
>
> diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt
> index 00c655ab4968..805baabd238e 100644
> --- a/tools/perf/Documentation/perf-script.txt
> +++ b/tools/perf/Documentation/perf-script.txt
> @@ -390,6 +390,13 @@ include::itrace.txt[]
> --xed::
> Run xed disassembler on output. Requires installing the xed disassembler.
>
> +--call-trace::
> + Show call stream for intel_pt traces. The CPUs are interleaved, but
> + can be filtered with -C.
> +
> +--call-ret-trace::
> + Show call and return stream for intel_pt traces.
Seems to me, these two features are _NOT_ only benefit for intel_pt,
other hardware tracing (e.g. Arm CoreSight) can enable these features
as well. This patch is to document only for intel_pt, later if we
enable this feature on Arm platform we need to change the doc;
alternatively we can use more general description for these two options
at the first place. How about you think for this?
Except this question, this patch looks good for me.
Thanks,
Leo Yan
> SEE ALSO
> --------
> linkperf:perf-record[1], linkperf:perf-script-perl[1],
> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index 519ebb5a1f96..6c4562973983 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -3119,6 +3119,26 @@ static int parse_xed(const struct option *opt __maybe_unused,
> return 0;
> }
>
> +static int parse_call_trace(const struct option *opt __maybe_unused,
> + const char *str __maybe_unused,
> + int unset __maybe_unused)
> +{
> + parse_output_fields(NULL, "-ip,-addr,-event,-period,+callindent", 0);
> + itrace_parse_synth_opts(opt, "cewp", 0);
> + nanosecs = true;
> + return 0;
> +}
> +
> +static int parse_callret_trace(const struct option *opt __maybe_unused,
> + const char *str __maybe_unused,
> + int unset __maybe_unused)
> +{
> + parse_output_fields(NULL, "-ip,-addr,-event,-period,+callindent,+flags", 0);
> + itrace_parse_synth_opts(opt, "crewp", 0);
> + nanosecs = true;
> + return 0;
> +}
> +
> int cmd_script(int argc, const char **argv)
> {
> bool show_full_info = false;
> @@ -3210,6 +3230,10 @@ int cmd_script(int argc, const char **argv)
> "Decode instructions from itrace", parse_insn_trace),
> OPT_CALLBACK_OPTARG(0, "xed", NULL, NULL, NULL,
> "Run xed disassembler on output", parse_xed),
> + OPT_CALLBACK_OPTARG(0, "call-trace", &itrace_synth_opts, NULL, NULL,
> + "Decode calls from from itrace", parse_call_trace),
> + OPT_CALLBACK_OPTARG(0, "call-ret-trace", &itrace_synth_opts, NULL, NULL,
> + "Decode calls and returns from itrace", parse_callret_trace),
> OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]",
> "Stop display of callgraph at these symbols"),
> OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
next prev parent reply other threads:[~2018-09-28 10:23 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-20 18:05 Make perf script easier to use for itrace Andi Kleen
2018-09-20 18:05 ` [PATCH v6 1/5] tools, perf, script: Add --insn-trace for instruction decoding Andi Kleen
2018-10-08 17:50 ` Arnaldo Carvalho de Melo
2018-10-08 18:03 ` Arnaldo Carvalho de Melo
2018-10-08 18:41 ` Andi Kleen
2018-10-08 19:40 ` Arnaldo Carvalho de Melo
2018-10-26 7:45 ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 2/5] perf, tools, script: Make itrace script default to all calls Andi Kleen
2018-10-26 7:46 ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 3/5] tools, perf, script: Add --call-trace and --call-ret-trace Andi Kleen
2018-09-28 10:23 ` leo.yan [this message]
2018-09-28 17:19 ` Andi Kleen
2018-09-29 7:39 ` leo.yan
2018-10-02 14:24 ` Arnaldo Carvalho de Melo
2018-10-02 23:09 ` leo.yan
2018-10-26 7:46 ` [tip:perf/urgent] tools " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 4/5] tools, perf, script: Implement --graph-function Andi Kleen
2018-10-26 7:47 ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 5/5] perf, tools, script: Support total cycles count Andi Kleen
2018-09-24 17:07 ` Andi Kleen
2018-10-26 7:47 ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180928102331.GA15533@leoy-ThinkPad-X240s \
--to=leo.yan@linaro.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=andi@firstfloor.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome