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

From: Arnaldo Carvalho de Melo
Date: Wed Mar 03 2021 - 13:40:51 EST


Em Mon, Feb 22, 2021 at 10:32:40PM +0100, Jiri Olsa escreveu:
> 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, applied to perf/core.

- Arnaldo


> 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
> >
>

--

- Arnaldo