Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932664AbdHVK2j (ORCPT ); Tue, 22 Aug 2017 06:28:39 -0400 Received: from terminus.zytor.com ([65.50.211.136]:43803 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932222AbdHVK2f (ORCPT ); Tue, 22 Aug 2017 06:28:35 -0400 Date: Tue, 22 Aug 2017 03:26:13 -0700 From: tip-bot for Taeung Song Message-ID: Cc: tglx@linutronix.de, milian.wolff@kdab.com, namhyung@kernel.org, linux-kernel@vger.kernel.org, acme@redhat.com, jolsa@redhat.com, treeze.taeung@gmail.com, mingo@kernel.org, hpa@zytor.com Reply-To: acme@redhat.com, linux-kernel@vger.kernel.org, namhyung@kernel.org, milian.wolff@kdab.com, tglx@linutronix.de, mingo@kernel.org, treeze.taeung@gmail.com, hpa@zytor.com, jolsa@redhat.com In-Reply-To: <1503046008-5511-1-git-send-email-treeze.taeung@gmail.com> References: <1503046008-5511-1-git-send-email-treeze.taeung@gmail.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf annotate stdio: Support --show-nr-samples option Git-Commit-ID: 1ac39372e06f5009982aaaf890fc5bbd044bb047 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4401 Lines: 118 Commit-ID: 1ac39372e06f5009982aaaf890fc5bbd044bb047 Gitweb: http://git.kernel.org/tip/1ac39372e06f5009982aaaf890fc5bbd044bb047 Author: Taeung Song AuthorDate: Fri, 18 Aug 2017 17:46:48 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 18 Aug 2017 10:31:53 -0300 perf annotate stdio: Support --show-nr-samples option Add --show-nr-samples option to "perf annotate" so that it matches "perf report". Committer note: Note that it can't be used together with --show-total-period, which seems like a silly limitation, that can be lifted at some point. Made it bail out if not on --stdio. Signed-off-by: Taeung Song Tested-by: Arnaldo Carvalho de Melo Cc: Jiri Olsa Cc: Milian Wolff Cc: Namhyung Kim Link: http://lkml.kernel.org/r/1503046008-5511-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/Documentation/perf-annotate.txt | 4 ++++ tools/perf/builtin-annotate.c | 16 ++++++++++++++-- tools/perf/util/annotate.c | 6 +++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt index a89273d..2a5975c 100644 --- a/tools/perf/Documentation/perf-annotate.txt +++ b/tools/perf/Documentation/perf-annotate.txt @@ -43,6 +43,10 @@ OPTIONS --quiet:: Do not show any message. (Suppress -v) +-n:: +--show-nr-samples:: + Show the number of samples for each symbol + -D:: --dump-raw-trace:: Dump raw trace in ASCII. diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 658c920..89fc038 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -403,7 +403,7 @@ int cmd_annotate(int argc, const char **argv) struct perf_data_file file = { .mode = PERF_DATA_MODE_READ, }; - const struct option options[] = { + struct option options[] = { OPT_STRING('i', "input", &input_name, "file", "input file name"), OPT_STRING('d', "dsos", &symbol_conf.dso_list_str, "dso[,dso...]", @@ -445,13 +445,20 @@ int cmd_annotate(int argc, const char **argv) "Show event group information together"), OPT_BOOLEAN(0, "show-total-period", &symbol_conf.show_total_period, "Show a column with the sum of periods"), + OPT_BOOLEAN('n', "show-nr-samples", &symbol_conf.show_nr_samples, + "Show a column with the number of samples"), OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode", "'always' (default), 'never' or 'auto' only applicable to --stdio mode", stdio__config_color, "always"), OPT_END() }; - int ret = hists__init(); + int ret; + + set_option_flag(options, 0, "show-total-period", PARSE_OPT_EXCLUSIVE); + set_option_flag(options, 0, "show-nr-samples", PARSE_OPT_EXCLUSIVE); + + ret = hists__init(); if (ret < 0) return ret; @@ -467,6 +474,11 @@ int cmd_annotate(int argc, const char **argv) annotate.sym_hist_filter = argv[0]; } + if (symbol_conf.show_nr_samples && !annotate.use_stdio) { + pr_err("--show-nr-samples is only available in --stdio mode at this time\n"); + return ret; + } + if (quiet) perf_quiet_option(); diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 2dab0e5..4397a8b 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1145,6 +1145,9 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st if (symbol_conf.show_total_period) color_fprintf(stdout, color, " %11" PRIu64, sample.period); + else if (symbol_conf.show_nr_samples) + color_fprintf(stdout, color, " %7" PRIu64, + sample.nr_samples); else color_fprintf(stdout, color, " %7.2f", percent); } @@ -1825,7 +1828,8 @@ int symbol__annotate_printf(struct symbol *sym, struct map *map, width *= evsel->nr_members; graph_dotted_len = printf(" %-*.*s| Source code & Disassembly of %s for %s (%" PRIu64 " samples)\n", - width, width, symbol_conf.show_total_period ? "Event count" : "Percent", + width, width, symbol_conf.show_total_period ? "Period" : + symbol_conf.show_nr_samples ? "Samples" : "Percent", d_filename, evsel_name, h->nr_samples); printf("%-*.*s----\n",