• Ian Rogers's avatar
    perf metrics: Modify setup and deduplication · 5ecd5a0c
    Ian Rogers authored
    Previously find_evsel_group was trying to share events while
    mark-sweeping to eliminate unused events, this was complicated and had
    issues around uncore events and grouped sharing.
    
    This was further complicated by the event string being created while
    metrics and metric groups were being added, with the string affecting
    the evlist order.
    
    This change moves deduplication before event parsing.  Ungrouped events
    are placed in a single combined set. Groups are checked to see if an
    earlier (larger) group can support their events.
    
    As the deduplication and sharing detection is done on metric IDs before
    parsing, wildcard expansion problems with uncore events are avoided.
    
    Overall the code is simpler while working better.
    
    An example of failing to deduplicate can be seen with a list of metrics
    like the following, where in the after case multiplexing has been
    avoided:
    
    Before:
    
      $ perf stat -M Bad_Speculation,Backend_Bound,Frontend_Bound,Retiring -a sleep 2
    
       Performance counter stats for 'system wide':
    
             959,620,872      uops_issued.any           #     0.06 Bad_Speculation    (50.03%)
           2,163,072,261      cycles
                                                        #     0.09 Retiring           (50.03%)
             735,827,436      uops_retired.retire_slots                               (50.03%)
              74,676,484      int_misc.recovery_cycles                                (50.03%)
             987,062,794      uops_issued.any           #     0.50 Backend_Bound      (49.97%)
           2,203,734,187      cycles
                                                        #     0.35 Frontend_Bound     (49.97%)
           3,085,016,091      idq_uops_not_delivered.core                             (49.97%)
             758,599,232      uops_retired.retire_slots                               (49.97%)
              75,807,526      int_misc.recovery_cycles                                (49.97%)
    
             2.002103760 seconds time elapsed
    
    After:
    
      $ sudo perf stat -M Bad_Speculation,Backend_Bound,Frontend_Bound,Retiring -a sleep 2
    
       Performance counter stats for 'system wide':
    
             769,694,676      uops_issued.any           #     0.08 Bad_Speculation
                                                        #     0.41 Backend_Bound
           1,087,548,633      cycles
                                                        #     0.38 Frontend_Bound
                                                        #     0.14 Retiring
           1,642,085,777      idq_uops_not_delivered.core
             603,112,590      uops_retired.retire_slots
              43,787,854      int_misc.recovery_cycles
    
             2.003844383 seconds time elapsed
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Antonov <alexander.antonov@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrew Kilroy <andrew.kilroy@arm.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Changbin Du <changbin.du@intel.com>
    Cc: Denys Zagorui <dzagorui@cisco.com>
    Cc: Fabian Hemmer <copy@copy.sh>
    Cc: Felix Fietkau <nbd@nbd.name>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jacob Keller <jacob.e.keller@intel.com>
    Cc: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Kees Kook <keescook@chromium.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Nicholas Fraser <nfraser@codeweavers.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Paul Clarke <pc@us.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Cc: ShihCheng Tu <mrtoastcheng@gmail.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Wan Jiabing <wanjiabing@vivo.com>
    Cc: Zhen Lei <thunder.leizhen@huawei.com>
    Link: https://lore.kernel.org/r/20211015172132.1162559-19-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    5ecd5a0c
metricgroup.c 37.9 KB