• Kan Liang's avatar
    perf annotate: Save branch counters for each block · 1f2b7fbb
    Kan Liang authored
    When annotating a basic block, it's useful to display the occurrences
    of other events in the block.
    
    The branch counter feature is only available for newer Intel platforms.
    
    So a dedicated option to display the branch counters is not introduced.
    
    Reuse the existing --total-cycles option, which triggers the annotation
    of a basic block and displays the cycle-related annotation.
    
    When the branch counters information is available, the branch counters
    are automatically appended after all the cycle-related annotation.
    
    Accounting the branch counters as well when accounting the cycles in
    hist__account_cycles().
    
    In 'struct annotated_branch', introduce a br_cntr array to save the
    accumulation of each branch counter.
    
    In a sample, all the branch counters for a branch are saved in a u64
    space.
    
    Because the saturation of a branch counter is small, e.g., for Intel
    Sierra Forest, the saturation is only 3.
    
    Add ANNOTATION__BR_CNTR_SATURATED_FLAG to indicate if a branch counter
    once saturated. That can be used to indicate a potential event lost
    because of the saturation.
    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-5-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    1f2b7fbb
machine.c 81.3 KB