Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp575006imm; Fri, 28 Sep 2018 03:25:21 -0700 (PDT) X-Google-Smtp-Source: ACcGV60IIqW6zNf10sSuqnPwMzUsUWmA/csVNNXC0Mpk2qjXt3UtVxxA9Hi6iym8vB+5FnbOLwXP X-Received: by 2002:a63:145f:: with SMTP id 31-v6mr2652188pgu.35.1538130321054; Fri, 28 Sep 2018 03:25:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538130321; cv=none; d=google.com; s=arc-20160816; b=mFhE9L5J/EA126kDTHX0UCpytZ2DefKLRUSu8s6qzYPiqMYh1pnMEW58TagjHeN24L TBYW6CE9ZdRhGlHUG1qg2M2G59gBNln/T7Lp9JNlubY9wavI0wFqbKxF9qEaiTCfc1Dd zu6jTMEJrGPBGDeG+i8AoNLA6iK42OJeZGVyYan8XN9nvxqFvCxHiTYyx+OqYs5JVEnz /kAgaBjo9/k5mtW+ntLfiv1XlqiUgdKiBHc9eTP6md6BKZBfy325iuawuDXZKoxl57y6 UKxNEtFGLNAhgSuuxgyF7kfLiC+lMjiJWV/6Fs6VDpx3fChro9z1bVfVcX1oVHt30KUR iUGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=Mj+HvahiXJ9vCDLJMK6OBVul4wxYmFsZu/bEWoCs1AA=; b=WFAP7ObcPDcHxmqRHA5v6rzE8aSptnwQ7pz8a/rLYRP6nSsyir7Xxc0aBAqsAKvzaE foaC5/rUVGPf4fKB6R3AveouelkvDAybPp9fp5wvnfhfFPQkCep/0JVYHIXCne8KBWBO oYGvXIFLF+67Q5E4y4b76FCoobXsvhCY9KUvbkM+rN+zYzR91MywXavovGq7OBPWbesw XVy27tESlW8ijAw36K+0JdDcjm68QMJWpBHdp6RPohpLRGbvjeqVTHNQgh8hxf0Z+MwI dtBLpon6pL/tJpnc7GttW5HARFEtn3wmM7qZ7m0xZ2QfBAollsg8dpvMlCyZmfNfr4sX U16w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TuTbnNaI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 91-v6si4765535ple.169.2018.09.28.03.25.04; Fri, 28 Sep 2018 03:25:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TuTbnNaI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729242AbeI1Qqp (ORCPT + 99 others); Fri, 28 Sep 2018 12:46:45 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:37266 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729116AbeI1Qqp (ORCPT ); Fri, 28 Sep 2018 12:46:45 -0400 Received: by mail-wr1-f68.google.com with SMTP id u12-v6so5788561wrr.4 for ; Fri, 28 Sep 2018 03:23:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Mj+HvahiXJ9vCDLJMK6OBVul4wxYmFsZu/bEWoCs1AA=; b=TuTbnNaIb74XYSyhj62ZCt6NeQodcFtC1OOBPzYLpyM9zcIjAX1aXByt3ZS3yvCi99 o4XYV+fj1Wd8TOyIDTJN1AYIx6MeV9Py9/9U2H7/eKYictYEQK6VORY4erpgoPOeFkTS zxacwDSrEptlsV9xGAYfWkCvVXF6Q6E1Ibn50= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Mj+HvahiXJ9vCDLJMK6OBVul4wxYmFsZu/bEWoCs1AA=; b=cxxKYKTxemEb7+lOa96/bW52i5IQmtn4GDRx8WOeoQ97IHYvr/i0/2R1zmWYo4i7Cy AGhvGtPaAy+GTWT6LOLJd6bX+9+ZPVfQmAqJNrjZlaCaCjmabeLFGgapbhygIyNU9dm6 bLuLMODY0Rb/VQ2R1TU6RWcTYo3mJ38MKS6vQ9/0bdb6fQAQBdScJMdINlYCdIyYLeio 1slPJR8EZvX2JbxSioVYRdwrHqvemNhjyAqJYX8IJOmSnGljc+l90THynKl16GJz8uzc tjgwQxXh1M/JGn0czFsEoK+ZlFpQHL49JiXNSxKaABGWSlts7Ea5WCH8bh1MBKeS0Gjd LelA== X-Gm-Message-State: ABuFfoj+FuSNBjUshfBpnRldrhuiCtAJtNPOUT0SgWsER2QUZWvUmwpZ 4qP7STDMe657Qp+OlBFb3VST0w== X-Received: by 2002:adf:e882:: with SMTP id d2-v6mr11407289wrm.43.1538130218716; Fri, 28 Sep 2018 03:23:38 -0700 (PDT) Received: from leoy-ThinkPad-X240s ([45.76.138.171]) by smtp.gmail.com with ESMTPSA id d18-v6sm1239674wmb.33.2018.09.28.03.23.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Sep 2018 03:23:37 -0700 (PDT) Date: Fri, 28 Sep 2018 18:23:31 +0800 From: leo.yan@linaro.org To: Andi Kleen Cc: acme@kernel.org, jolsa@kernel.org, linux-kernel@vger.kernel.org, Andi Kleen , Mathieu Poirier Subject: Re: [PATCH v6 3/5] tools, perf, script: Add --call-trace and --call-ret-trace Message-ID: <20180928102331.GA15533@leoy-ThinkPad-X240s> References: <20180920180540.14039-1-andi@firstfloor.org> <20180920180540.14039-4-andi@firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180920180540.14039-4-andi@firstfloor.org> User-Agent: Mutt/1.10+31 (9cdd884) (2018-06-19) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andi, On Thu, Sep 20, 2018 at 11:05:38AM -0700, Andi Kleen wrote: > From: Andi Kleen > > 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 > --- > 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"),