• Kan Liang's avatar
    perf report: Display the branch counter histogram · 20d6f555
    Kan Liang authored
    Reusing the existing --total-cycles option to display the branch
    counters. Add a new PERF_HPP_REPORT__BLOCK_BRANCH_COUNTER to display
    the logged branch counter events. They are shown right after all the
    cycle-related annotations.
    
    Extend the 'struct block_info' to store and pass the branch counter
    related information.
    
    The annotation_br_cntr_entry() is to print the histogram of each branch
    counter event. If the number of logged events is less than 4, the exact
    number of the abbr name is printed. Otherwise, using '+' to stands for
    more than 3 events.
    
    Assume the number of logged events is less than 4.
    
    The annotation_br_cntr_abbr_list() prints the branch counter's
    abbreviation list. Press 'B' to display the list in the TUI mode.
    
      $ perf record -e "{branch-instructions:ppp,branch-misses}:S" -j any,counter
      $ perf report  --total-cycles --stdio
    
      # To display the perf.data header info, please use --header/--header-only options.
      #
      #
      # Total Lost Samples: 0
      #
      # Samples: 1M of events 'anon group { branch-instructions:ppp, branch-misses }'
      # Event count (approx.): 1610046
      #
      # Branch counter abbr list:
      # branch-instructions:ppp = A
      # branch-misses = B
      # '-' No event occurs
      # '+' Event occurrences may be lost due to branch counter saturated
      #
      # Sampled Cycles%  Sampled Cycles  Avg Cycles%  Avg Cycles  Branch Counter [Program Block Range]
      # ...............  ..............  ...........  ..........  ..............  ..................
      #
                57.55%            2.5M        0.00%           3     |A   |-   |                 ...
                25.27%            1.1M        0.00%           2     |AA  |-   |                 ...
                15.61%          667.2K        0.00%           1     |A   |-   |                 ...
                 0.16%            6.9K        0.81%         575     |A   |-   |                 ...
                 0.16%            6.8K        1.38%         977     |AA  |-   |                 ...
                 0.16%            6.8K        0.04%          28     |AA  |B   |                 ...
                 0.15%            6.6K        1.33%         946     |A   |-   |                 ...
                 0.11%            4.5K        0.06%          46     |AAA+|-   |                 ...
                 0.10%            4.4K        0.88%         624     |A   |-   |                 ...
                 0.09%            3.7K        0.74%         524     |AAA+|B   |                 ...
    
    With -v applied,
    
      # Sampled Cycles%  Sampled Cycles  Avg Cycles%  Avg Cycles  Branch Counter [Program Block Range]
      # ...............  ..............  ...........  ..........  ..............  ..................
      #
                57.55%            2.5M        0.00%           3       A=1 ,B=-                  ...
                25.27%            1.1M        0.00%           2       A=2 ,B=-                  ...
                15.61%          667.2K        0.00%           1       A=1 ,B=-                  ...
                 0.16%            6.9K        0.81%         575       A=1 ,B=-                  ...
                 0.16%            6.8K        1.38%         977       A=2 ,B=-                  ...
                 0.16%            6.8K        0.04%          28       A=2 ,B=1                  ...
                 0.15%            6.6K        1.33%         946       A=1 ,B=-                  ...
                 0.11%            4.5K        0.06%          46       A=3+,B=-                  ...
                 0.10%            4.4K        0.88%         624       A=1 ,B=-                  ...
                 0.09%            3.7K        0.74%         524       A=3+,B=1                  ...
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20240813160208.2493643-7-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    20d6f555
block-info.c 13.2 KB