Re: [PATCH] perf report: Create option to disable raw event ordering

From: Jiri Olsa
Date: Mon Feb 22 2021 - 16:34:49 EST


On Fri, Feb 19, 2021 at 03:00:05PM +0800, Jin Yao wrote:
> Warning "dso not found" is reported when using "perf report -D".
>
> 66702781413407 0x32c0 [0x30]: PERF_RECORD_SAMPLE(IP, 0x2): 28177/28177: 0x55e493e00563 period: 106578 addr: 0
> ... thread: perf:28177
> ...... dso: <not found>
>
> 66702727832429 0x9dd8 [0x38]: PERF_RECORD_COMM exec: triad_loop:28177/28177
>
> The PERF_RECORD_SAMPLE event (timestamp: 66702781413407) should be after the
> PERF_RECORD_COMM event (timestamp: 66702727832429), but it's early processed.
>
> So for most of cases, it makes sense to keep the event ordered even for dump
> mode. But it would be also useful to disable ordered_events for reporting raw
> dump to see events as they are stored in the perf.data file.
>
> So now, set ordered_events by default to true and add a new option
> 'disable-order' to disable it. For example,
>
> perf report -D --disable-order
>
> Fixes: 977f739b7126b ("perf report: Disable ordered_events for raw dump")
> Signed-off-by: Jin Yao <yao.jin@xxxxxxxxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka


> ---
> tools/perf/Documentation/perf-report.txt | 3 +++
> tools/perf/builtin-report.c | 5 ++++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
> index f546b5e9db05..87112e8d904e 100644
> --- a/tools/perf/Documentation/perf-report.txt
> +++ b/tools/perf/Documentation/perf-report.txt
> @@ -224,6 +224,9 @@ OPTIONS
> --dump-raw-trace::
> Dump raw trace in ASCII.
>
> +--disable-order::
> + Disable raw trace ordering.
> +
> -g::
> --call-graph=<print_type,threshold[,print_limit],order,sort_key[,branch],value>::
> Display call chains using type, min percent threshold, print limit,
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index 2a845d6cac09..0d65c98794a8 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -84,6 +84,7 @@ struct report {
> bool nonany_branch_mode;
> bool group_set;
> bool stitch_lbr;
> + bool disable_order;
> int max_stack;
> struct perf_read_values show_threads_values;
> struct annotation_options annotation_opts;
> @@ -1296,6 +1297,8 @@ int cmd_report(int argc, const char **argv)
> OPTS_EVSWITCH(&report.evswitch),
> OPT_BOOLEAN(0, "total-cycles", &report.total_cycles_mode,
> "Sort all blocks by 'Sampled Cycles%'"),
> + OPT_BOOLEAN(0, "disable-order", &report.disable_order,
> + "Disable raw trace ordering"),
> OPT_END()
> };
> struct perf_data data = {
> @@ -1329,7 +1332,7 @@ int cmd_report(int argc, const char **argv)
> if (report.mmaps_mode)
> report.tasks_mode = true;
>
> - if (dump_trace)
> + if (dump_trace && report.disable_order)
> report.tool.ordered_events = false;
>
> if (quiet)
> --
> 2.17.1
>