• Kan Liang's avatar
    perf stat: New metricgroup output for the default mode · 6a80d794
    Kan Liang authored
    In the default mode, the current output of the metricgroup include both
    events and metrics, which is not necessary and just makes the output
    hard to read. Since different ARCHs (even different generations in the
    same ARCH) may use different events. The output also vary on different
    platforms.
    
    For a metricgroup, only outputting the value of each metric is good
    enough.
    
    Add a new field default_metricgroup in evsel to indicate an event of the
    default metricgroup. For those events, printout() should print the
    metricgroup name rather than each event.
    
    Add perf_stat__skip_metric_event() to skip the evsel in the Default
    metricgroup, if it's not running or not the metric event.
    
    Add print_metricgroup_header_t to pass the functions which print the
    display name of each metricgroup in the Default metricgroup. Support all
    three output methods.
    
    Factor out perf_stat__print_shadow_stats_metricgroup() to print out each
    metrics.
    
    On SPR:
    
    Before:
    
     ./perf_old stat sleep 1
    
     Performance counter stats for 'sleep 1':
    
                  0.54 msec task-clock:u                     #    0.001 CPUs utilized
                     0      context-switches:u               #    0.000 /sec
                     0      cpu-migrations:u                 #    0.000 /sec
                    68      page-faults:u                    #  125.445 K/sec
               540,970      cycles:u                         #    0.998 GHz
               556,325      instructions:u                   #    1.03  insn per cycle
               123,602      branches:u                       #  228.018 M/sec
                 6,889      branch-misses:u                  #    5.57% of all branches
             3,245,820      TOPDOWN.SLOTS:u                  #     18.4 %  tma_backend_bound
                                                      #     17.2 %  tma_retiring
                                                      #     23.1 %  tma_bad_speculation
                                                      #     41.4 %  tma_frontend_bound
               564,859      topdown-retiring:u
             1,370,999      topdown-fe-bound:u
               603,271      topdown-be-bound:u
               744,874      topdown-bad-spec:u
                12,661      INT_MISC.UOP_DROPPING:u          #   23.357 M/sec
    
           1.001798215 seconds time elapsed
    
           0.000193000 seconds user
           0.001700000 seconds sys
    
    After:
    
    $ ./perf stat sleep 1
    
     Performance counter stats for 'sleep 1':
    
                  0.51 msec task-clock:u                     #    0.001 CPUs utilized
                     0      context-switches:u               #    0.000 /sec
                     0      cpu-migrations:u                 #    0.000 /sec
                    68      page-faults:u                    #  132.683 K/sec
               545,228      cycles:u                         #    1.064 GHz
               555,509      instructions:u                   #    1.02  insn per cycle
               123,574      branches:u                       #  241.120 M/sec
                 6,957      branch-misses:u                  #    5.63% of all branches
                            TopdownL1                 #     17.5 %  tma_backend_bound
                                                      #     22.6 %  tma_bad_speculation
                                                      #     42.7 %  tma_frontend_bound
                                                      #     17.1 %  tma_retiring
                            TopdownL2                 #     21.8 %  tma_branch_mispredicts
                                                      #     11.5 %  tma_core_bound
                                                      #     13.4 %  tma_fetch_bandwidth
                                                      #     29.3 %  tma_fetch_latency
                                                      #      2.7 %  tma_heavy_operations
                                                      #     14.5 %  tma_light_operations
                                                      #      0.8 %  tma_machine_clears
                                                      #      6.1 %  tma_memory_bound
    
           1.001712086 seconds time elapsed
    
           0.000151000 seconds user
           0.001618000 seconds sys
    Reviewed-by: default avatarIan Rogers <irogers@google.com>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ahmad Yasin <ahmad.yasin@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20230616031420.3751973-3-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    6a80d794
evsel.h 17 KB