Re: [PATCH v2 6/7] perf diff: Print the basic block cycles diff

From: Jiri Olsa
Date: Wed Jun 05 2019 - 07:48:22 EST


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