On 6/5/2019 7:44 PM, Jiri Olsa wrote:
On Mon, Jun 03, 2019 at 10:36:16PM +0800, Jin Yao wrote:
perf record -b ./div
perf record -b ./div

Following is the default perf diff output

  # perf diff

  # Event 'cycles'
  #
  # Baseline  Delta Abs  Shared Object     Symbol
  # ........  .........  ................  ....................................
  #
      49.03%     +0.30%  div               [.] main
      16.29%     -0.20%  libc-2.23.so      [.] __random
      18.82%     -0.07%  libc-2.23.so      [.] __random_r
       8.11%     -0.04%  div               [.] compute_flag
       2.25%     +0.01%  div               [.] rand@plt
       0.00%     +0.01%  [kernel.vmlinux]  [k] task_tick_fair
       5.46%     +0.01%  libc-2.23.so      [.] rand
       0.01%     -0.01%  [kernel.vmlinux]  [k] native_irq_return_iret
       0.00%     -0.00%  [kernel.vmlinux]  [k] interrupt_entry

This patch creates a new computation selection 'cycles'.

  # perf diff -c cycles

  # Event 'cycles'
  #
  # Baseline         Block cycles diff [start:end]  Shared Object     Symbol
  # ........  ....................................  ................  
....................................
  #
      49.03%        -9 [         4ef:         520]  div               [.] main
      49.03%         0 [         4e8:         4ea]  div               [.] main
      49.03%         0 [         4ef:         500]  div               [.] main
      49.03%         0 [         4ef:         51c]  div               [.] main
      49.03%         0 [         4ef:         535]  div               [.] main
      18.82%         0 [       3ac40:       3ac4d]  libc-2.23.so      [.] 
__random_r
      18.82%         0 [       3ac40:       3ac5c]  libc-2.23.so      [.] 
__random_r
      18.82%         0 [       3ac40:       3ac76]  libc-2.23.so      [.] 
__random_r
      18.82%         0 [       3ac40:       3ac88]  libc-2.23.so      [.] 
__random_r
      18.82%         0 [       3ac90:       3ac9c]  libc-2.23.so      [.] 
__random_r
      16.29%        -8 [       3aac0:       3aac0]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3aac0:       3aad2]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3aae0:       3aae7]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3ab03:       3ab0f]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3ab14:       3ab1b]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3ab28:       3ab2e]  libc-2.23.so      [.] 
__random
      16.29%         0 [       3ab4a:       3ab53]  libc-2.23.so      [.] 
__random
       8.11%         0 [         640:         644]  div               [.] 
compute_flag
       8.11%         0 [         649:         659]  div               [.] 
compute_flag
       5.46%         0 [       3af60:       3af60]  libc-2.23.so      [.] rand
       5.46%         0 [       3af60:       3af64]  libc-2.23.so      [.] rand
       2.25%         0 [         490:         490]  div               [.] 
rand@plt
       0.01%        26 [      c00a27:      c00a27]  [kernel.vmlinux]  [k] 
native_irq_return_iret
       0.00%      -157 [      2bf9f2:      2bfa63]  [kernel.vmlinux]  [k] 
update_blocked_averages
       0.00%       -56 [      2bf980:      2bf9d3]  [kernel.vmlinux]  [k] 
update_blocked_averages
       0.00%        48 [      2bf934:      2bf942]  [kernel.vmlinux]  [k] 
update_blocked_averages
       0.00%         3 [      2bfb38:      2bfb67]  [kernel.vmlinux]  [k] 
update_blocked_averages
       0.00%         0 [      2bf968:      2bf97b]  [kernel.vmlinux]  [k] 
update_blocked_averages


so what I'd expect would be Baseline column with cycles and another
column showing the differrence (in cycles) for given symbol

"[start:end]" indicates the basic block range. The output is sorted
by "Baseline" and the basic blocks in the same function are sorted
by cycles diff.

hum, why is there multiple basic blocks [start:end] for a symbol?

thanks,
jirka


The basic block is the code between 2 branches (for one branch, for example, jmp, call, ret, interrupt, ...). So it's expected that one function (symbol is function) may contain multiple basic blocks.

The idea is, sorting by baseline to display the hottest functions and the second column shows the cycles diff of blocks in this function (comparing between different perf data files). This would allow to identify performance changes in specific code accurately and effectively.

Thanks
Jin Yao


Reply via email to