2017-08-18 08:47:00

by Taeung Song

[permalink] [raw]
Subject: [PATCH v3 1/5] perf annotate stdio: Support --show-nr-samples option

Add --show-nr-samples option to perf-annotate
so that it corresponds with perf-report.

Cc: Namhyung Kim <[email protected]>
Cc: Milian Wolff <[email protected]>
Cc: Jiri Olsa <[email protected]>
Signed-off-by: Taeung Song <[email protected]>
---
tools/perf/Documentation/perf-annotate.txt | 4 ++++
tools/perf/builtin-annotate.c | 2 ++
tools/perf/util/annotate.c | 6 +++++-
3 files changed, 11 insertions(+), 1 deletion(-)

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..acde4cc 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -445,6 +445,8 @@ 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"),
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",
--
2.7.4


2017-08-18 13:34:40

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH v3 1/5] perf annotate stdio: Support --show-nr-samples option

Em Fri, Aug 18, 2017 at 05:46:48PM +0900, Taeung Song escreveu:
> Add --show-nr-samples option to perf-annotate
> so that it corresponds with perf-report.

So, at this point I tried to test it and forgot this was just about
--stdio, which confused me, so I added the following patch, that I'll
lift when adding the browser support, which may not happen at this time
if there are problems there.

@@ -473,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;
+ }
+

- Arnaldo

> Cc: Namhyung Kim <[email protected]>
> Cc: Milian Wolff <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> Signed-off-by: Taeung Song <[email protected]>
> ---
> tools/perf/Documentation/perf-annotate.txt | 4 ++++
> tools/perf/builtin-annotate.c | 2 ++
> tools/perf/util/annotate.c | 6 +++++-
> 3 files changed, 11 insertions(+), 1 deletion(-)
>
> 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..acde4cc 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
> @@ -445,6 +445,8 @@ 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"),
> 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",
> --
> 2.7.4

2017-08-21 05:33:13

by Taeung Song

[permalink] [raw]
Subject: Re: [PATCH v3 1/5] perf annotate stdio: Support --show-nr-samples option



On 08/18/2017 10:33 PM, Arnaldo Carvalho de Melo wrote:
> Em Fri, Aug 18, 2017 at 05:46:48PM +0900, Taeung Song escreveu:
>> Add --show-nr-samples option to perf-annotate
>> so that it corresponds with perf-report.
>
> So, at this point I tried to test it and forgot this was just about
> --stdio, which confused me, so I added the following patch, that I'll
> lift when adding the browser support, which may not happen at this time
> if there are problems there.
>
> @@ -473,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;
> + }
> +
>
> - Arnaldo
>

Ok, got it.

Thanks,
Taeung

>> Cc: Namhyung Kim <[email protected]>
>> Cc: Milian Wolff <[email protected]>
>> Cc: Jiri Olsa <[email protected]>
>> Signed-off-by: Taeung Song <[email protected]>
>> ---
>> tools/perf/Documentation/perf-annotate.txt | 4 ++++
>> tools/perf/builtin-annotate.c | 2 ++
>> tools/perf/util/annotate.c | 6 +++++-
>> 3 files changed, 11 insertions(+), 1 deletion(-)
>>
>> 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..acde4cc 100644
>> --- a/tools/perf/builtin-annotate.c
>> +++ b/tools/perf/builtin-annotate.c
>> @@ -445,6 +445,8 @@ 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"),
>> 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",
>> --
>> 2.7.4

Subject: [tip:perf/core] perf annotate stdio: Support --show-nr-samples option

Commit-ID: 1ac39372e06f5009982aaaf890fc5bbd044bb047
Gitweb: http://git.kernel.org/tip/1ac39372e06f5009982aaaf890fc5bbd044bb047
Author: Taeung Song <[email protected]>
AuthorDate: Fri, 18 Aug 2017 17:46:48 +0900
Committer: Arnaldo Carvalho de Melo <[email protected]>
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 <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Milian Wolff <[email protected]>
Cc: Namhyung Kim <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
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",