Messages in this thread | | | Date | Tue, 22 Jun 2021 15:16:35 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH RFC 01/11] perf script: Move filter_cpu() earlier |
| |
Em Mon, Jun 21, 2021 at 06:05:04PM +0300, Adrian Hunter escreveu: > Generally, it should be more efficient if filter_cpu() comes before > machine__resolve() because filter_cpu() is much less code than > machine__resolve().
Simple patch, I like it, applied.
- Arnaldo
> Example: > > $ perf record --sample-cpu -- make -C tools/perf >/dev/null > > Before: > > $ perf stat -- perf script -C 0 >/dev/null > > Performance counter stats for 'perf script -C 0': > > 116.94 msec task-clock # 0.992 CPUs utilized > 2 context-switches # 17.103 /sec > 0 cpu-migrations # 0.000 /sec > 8,187 page-faults # 70.011 K/sec > 478,351,812 cycles # 4.091 GHz > 564,785,464 instructions # 1.18 insn per cycle > 114,341,105 branches # 977.789 M/sec > 2,615,495 branch-misses # 2.29% of all branches > > 0.117840576 seconds time elapsed > > 0.085040000 seconds user > 0.032396000 seconds sys > > After: > > $ perf stat -- perf script -C 0 >/dev/null > > Performance counter stats for 'perf script -C 0': > > 107.45 msec task-clock # 0.992 CPUs utilized > 3 context-switches # 27.919 /sec > 0 cpu-migrations # 0.000 /sec > 7,964 page-faults # 74.117 K/sec > 438,417,260 cycles # 4.080 GHz > 522,571,855 instructions # 1.19 insn per cycle > 105,187,488 branches # 978.921 M/sec > 2,356,261 branch-misses # 2.24% of all branches > > 0.108282546 seconds time elapsed > > 0.095935000 seconds user > 0.011991000 seconds sys > > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> > --- > tools/perf/builtin-script.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 57488d60b64a..08a2b5d51018 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -2191,6 +2191,9 @@ static int process_sample_event(struct perf_tool *tool, > return 0; > } > > + if (filter_cpu(sample)) > + return 0; > + > if (machine__resolve(machine, &al, sample) < 0) { > pr_err("problem processing %d event, skipping it.\n", > event->header.type); > @@ -2200,9 +2203,6 @@ static int process_sample_event(struct perf_tool *tool, > if (al.filtered) > goto out_put; > > - if (filter_cpu(sample)) > - goto out_put; > - > if (scripting_ops) { > struct addr_location *addr_al_ptr = NULL; > struct addr_location addr_al; > -- > 2.17.1 >
--
- Arnaldo
| |