Commit 1ac39372 authored by Taeung Song's avatar Taeung Song Committed by Arnaldo Carvalho de Melo

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: default avatarTaeung Song <treeze.taeung@gmail.com>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1503046008-5511-1-git-send-email-treeze.taeung@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 9a57eaf1
...@@ -43,6 +43,10 @@ OPTIONS ...@@ -43,6 +43,10 @@ OPTIONS
--quiet:: --quiet::
Do not show any message. (Suppress -v) Do not show any message. (Suppress -v)
-n::
--show-nr-samples::
Show the number of samples for each symbol
-D:: -D::
--dump-raw-trace:: --dump-raw-trace::
Dump raw trace in ASCII. Dump raw trace in ASCII.
......
...@@ -403,7 +403,7 @@ int cmd_annotate(int argc, const char **argv) ...@@ -403,7 +403,7 @@ int cmd_annotate(int argc, const char **argv)
struct perf_data_file file = { struct perf_data_file file = {
.mode = PERF_DATA_MODE_READ, .mode = PERF_DATA_MODE_READ,
}; };
const struct option options[] = { struct option options[] = {
OPT_STRING('i', "input", &input_name, "file", OPT_STRING('i', "input", &input_name, "file",
"input file name"), "input file name"),
OPT_STRING('d', "dsos", &symbol_conf.dso_list_str, "dso[,dso...]", OPT_STRING('d', "dsos", &symbol_conf.dso_list_str, "dso[,dso...]",
...@@ -445,13 +445,20 @@ int cmd_annotate(int argc, const char **argv) ...@@ -445,13 +445,20 @@ int cmd_annotate(int argc, const char **argv)
"Show event group information together"), "Show event group information together"),
OPT_BOOLEAN(0, "show-total-period", &symbol_conf.show_total_period, OPT_BOOLEAN(0, "show-total-period", &symbol_conf.show_total_period,
"Show a column with the sum of periods"), "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", OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode",
"'always' (default), 'never' or 'auto' only applicable to --stdio mode", "'always' (default), 'never' or 'auto' only applicable to --stdio mode",
stdio__config_color, "always"), stdio__config_color, "always"),
OPT_END() 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) if (ret < 0)
return ret; return ret;
...@@ -467,6 +474,11 @@ int cmd_annotate(int argc, const char **argv) ...@@ -467,6 +474,11 @@ int cmd_annotate(int argc, const char **argv)
annotate.sym_hist_filter = argv[0]; 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) if (quiet)
perf_quiet_option(); perf_quiet_option();
......
...@@ -1145,6 +1145,9 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st ...@@ -1145,6 +1145,9 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
if (symbol_conf.show_total_period) if (symbol_conf.show_total_period)
color_fprintf(stdout, color, " %11" PRIu64, color_fprintf(stdout, color, " %11" PRIu64,
sample.period); sample.period);
else if (symbol_conf.show_nr_samples)
color_fprintf(stdout, color, " %7" PRIu64,
sample.nr_samples);
else else
color_fprintf(stdout, color, " %7.2f", percent); color_fprintf(stdout, color, " %7.2f", percent);
} }
...@@ -1825,7 +1828,8 @@ int symbol__annotate_printf(struct symbol *sym, struct map *map, ...@@ -1825,7 +1828,8 @@ int symbol__annotate_printf(struct symbol *sym, struct map *map,
width *= evsel->nr_members; width *= evsel->nr_members;
graph_dotted_len = printf(" %-*.*s| Source code & Disassembly of %s for %s (%" PRIu64 " samples)\n", 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); d_filename, evsel_name, h->nr_samples);
printf("%-*.*s----\n", printf("%-*.*s----\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment