Skip to content
  • Jin Yao's avatar
    perf annotate: Compute average IPC and IPC coverage per symbol · ace4f8fa
    Jin Yao authored
    
    
    Add support to 'perf report' annotate view or 'perf annotate --stdio2'
    to aggregate the IPC derived from timed LBRs per symbol. We compute the
    average IPC and the IPC coverage percentage.
    
    For example:
    
      $ perf annotate --stdio2
    
      Percent  IPC Cycle (Average IPC: 2.30, IPC Coverage: 54.8%)
    
                              Disassembly of section .text:
    
                              000000000003aac0 <random@@GLIBC_2.2.5>:
        8.32  3.28              sub    $0x18,%rsp
              3.28              mov    $0x1,%esi
              3.28              xor    %eax,%eax
              3.28              cmpl   $0x0,argp_program_version_hook@@GLIBC_2.2.5+0x1e0
       11.57  3.28     1      ↓ je     20
                                lock   cmpxchg %esi,__abort_msg@@GLIBC_PRIVATE+0x8a0
                              ↓ jne    29
                              ↓ jmp    43
       11.57  1.10        20:   cmpxchg %esi,__abort_msg@@GLIBC_PRIVATE+0x8a0
        0.00  1.10     1      ↓ je     43
                          29:   lea    __abort_msg@@GLIBC_PRIVATE+0x8a0,%rdi
                                sub    $0x80,%rsp
                              → callq  __lll_lock_wait_private
                                add    $0x80,%rsp
        0.00  3.00        43:   lea    __ctype_b@GLIBC_2.2.5+0x38,%rdi
              3.00              lea    0xc(%rsp),%rsi
        8.49  3.00     1      → callq  __random_r
        7.91  1.94              cmpl   $0x0,argp_program_version_hook@@GLIBC_2.2.5+0x1e0
        0.00  1.94     1      ↓ je     68
                                lock   decl   __abort_msg@@GLIBC_PRIVATE+0x8a0
                              ↓ jne    70
                              ↓ jmp    8a
        0.00  2.00        68:   decl   __abort_msg@@GLIBC_PRIVATE+0x8a0
       21.56  2.00     1      ↓ je     8a
                          70:   lea    __abort_msg@@GLIBC_PRIVATE+0x8a0,%rdi
                                sub    $0x80,%rsp
                              → callq  __lll_unlock_wake_private
                                add    $0x80,%rsp
       21.56  2.90        8a:   movslq 0xc(%rsp),%rax
              2.90              add    $0x18,%rsp
        9.03  2.90     1      ← retq
    
    It shows for this symbol the average IPC is 2.30 and the IPC coverage is
    54.8%.
    
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1543586097-27632-2-git-send-email-yao.jin@linux.intel.com
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ace4f8fa