Performance Monitoring Unit (PMU) registers in powerpc exports
number of cycles elapsed between different stages in the pipeline.
Example, sampling registers in ISA v3.1.

This patchset implements kernel and perf tools support to expose
these pipeline stage cycles using the sample type PERF_SAMPLE_WEIGHT_TYPE.

Patch 1/5 adds kernel side support to store the cycle counter
values as part of 'var2_w' and 'var3_w' fields of perf_sample_weight
structure.

Patch 2/5 adds support to make the perf report column header
strings as dynamic.
Patch 3/5 adds powerpc support in perf tools for PERF_SAMPLE_WEIGHT_STRUCT
in sample type: PERF_SAMPLE_WEIGHT_TYPE.
Patch 4/5 adds support to present pipeline stage cycles as part of
mem-mode.
Patch 5/5 is to display the new sort dimenstion in perf report columns
only on powerpc.

Sample output on powerpc:

# perf mem record ls
# perf mem report

# To display the perf.data header info, please use --header/--header-only 
options.
#
#
# Total Lost Samples: 0
#
# Samples: 11  of event 'cpu/mem-loads/'
# Total weight : 1332
# Sort order   : 
local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked,blocked,local_ins_lat,stall_cyc
#
# Overhead       Samples  Local Weight  Memory access             Symbol        
                      Shared Object     Data Symbol                             
       Data Object            Snoop         TLB access              Locked  
Blocked     Finish Cyc     Dispatch Cyc 
# ........  ............  ............  ........................  
..................................  ................  
.............................................  .....................  
............  ......................  ......  ..........  .............  
.............
#
    44.14%             1  588           L1 hit                    [k] 
rcu_nmi_exit                    [kernel.vmlinux]  [k] 0xc0000007ffdd21b0        
                 [unknown]              N/A           N/A                     
No       N/A        7              5            
    22.22%             1  296           L1 hit                    [k] 
copypage_power7                 [kernel.vmlinux]  [k] 0xc0000000ff6a1780        
                 [unknown]              N/A           N/A                     
No       N/A        293            3            
     6.98%             1  93            L1 hit                    [.] _dl_addr  
                      libc-2.31.so      [.] 0x00007fff86fa5058                  
       libc-2.31.so           N/A           N/A                     No       
N/A        7              1            
     6.61%             1  88            L2 hit                    [.] 
new_do_write                    libc-2.31.so      [.] _IO_2_1_stdout_+0x0       
                 libc-2.31.so           N/A           N/A                     
No       N/A        84             1            
     5.93%             1  79            L1 hit                    [k] 
printk_nmi_exit                 [kernel.vmlinux]  [k] 0xc0000006085df6b0        
                 [unknown]              N/A           N/A                     
No       N/A        7              1            
     4.05%             1  54            L2 hit                    [.] 
__alloc_dir                     libc-2.31.so      [.] 0x00007fffdb70a640        
                 [stack]                N/A           N/A                     
No       N/A        18             1            
     3.60%             1  48            L1 hit                    [.] _init     
                      ls                [.] 0x000000016ca82118                  
       [heap]                 N/A           N/A                     No       
N/A        7              6            
     2.40%             1  32            L1 hit                    [k] desc_read 
                      [kernel.vmlinux]  [k] _printk_rb_static_descs+0x1ea10     
       [kernel.vmlinux].data  N/A           N/A                     No       
N/A        7              1            
     1.65%             1  22            L2 hit                    [k] 
perf_iterate_ctx.constprop.139  [kernel.vmlinux]  [k] 0xc00000064d79e8a8        
                 [unknown]              N/A           N/A                     
No       N/A        16             1            
     1.58%             1  21            L1 hit                    [k] 
perf_event_interrupt            [kernel.vmlinux]  [k] 0xc0000006085df6b0        
                 [unknown]              N/A           N/A                     
No       N/A        7              1            
     0.83%             1  11            L1 hit                    [k] 
perf_event_exec                 [kernel.vmlinux]  [k] 0xc0000007ffdd3288        
                 [unknown]              N/A           N/A                     
No       N/A        7              4            


Changelog:
Changes from v1 -> v2
  Addressed Jiri's review comments:
  - Display the new sort dimension 'p_stage_cyc' only
    on supported architecture.
  - Check for arch specific header string for matching
    sort order in patch2.
  
Athira Rajeev (5):
  powerpc/perf: Expose processor pipeline stage cycles using
    PERF_SAMPLE_WEIGHT_STRUCT
  tools/perf: Add dynamic headers for perf report columns
  tools/perf: Add powerpc support for PERF_SAMPLE_WEIGHT_STRUCT
  tools/perf: Support pipeline stage cycles for powerpc
  tools/perf: Display sort dimension p_stage_cyc only on supported archs

 arch/powerpc/include/asm/perf_event_server.h |  2 +-
 arch/powerpc/perf/core-book3s.c              |  4 +-
 arch/powerpc/perf/isa207-common.c            | 29 ++++++++++++--
 arch/powerpc/perf/isa207-common.h            |  6 ++-
 tools/perf/Documentation/perf-report.txt     |  2 +
 tools/perf/arch/powerpc/util/Build           |  2 +
 tools/perf/arch/powerpc/util/event.c         | 53 ++++++++++++++++++++++++
 tools/perf/arch/powerpc/util/evsel.c         |  8 ++++
 tools/perf/util/event.h                      |  3 ++
 tools/perf/util/hist.c                       | 11 +++--
 tools/perf/util/hist.h                       |  1 +
 tools/perf/util/session.c                    |  4 +-
 tools/perf/util/sort.c                       | 60 +++++++++++++++++++++++++++-
 tools/perf/util/sort.h                       |  2 +
 14 files changed, 174 insertions(+), 13 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/util/event.c
 create mode 100644 tools/perf/arch/powerpc/util/evsel.c

-- 
1.8.3.1

Reply via email to