perf stat: Fix group lookup for metric group
authorAndi Kleen <ak@linux.intel.com>
Mon, 24 Jun 2019 19:37:10 +0000 (12:37 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 2 Jul 2019 01:50:41 +0000 (22:50 -0300)
commit2f87f33f4226523df9c9cc28f9874ea02fcc3d3f
tree53bd617dcee59f4fa9f9c0b6bd8708468e555321
parent6c5f4e5cb35b4694dc035d91092d23f596ecd06a
perf stat: Fix group lookup for metric group

The metric group code tries to find a group it added earlier in the
evlist. Fix the lookup to handle groups with partially overlaps
correctly. When a sub string match fails and we reset the match, we have
to compare the first element again.

I also renamed the find_evsel function to find_evsel_group to make its
purpose clearer.

With the earlier changes this fixes:

Before:

  % perf stat -M UPI,IPC sleep 1
  ...
         1,032,922      uops_retired.retire_slots #      1.1 UPI
         1,896,096      inst_retired.any
         1,896,096      inst_retired.any
         1,177,254      cpu_clk_unhalted.thread

After:

  % perf stat -M UPI,IPC sleep 1
  ...
        1,013,193      uops_retired.retire_slots #      1.1 UPI
           932,033      inst_retired.any
           932,033      inst_retired.any          #      0.9 IPC
         1,091,245      cpu_clk_unhalted.thread

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Fixes: b18f3e365019 ("perf stat: Support JSON metrics in perf stat")
Link: http://lkml.kernel.org/r/20190624193711.35241-4-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/metricgroup.c