Re: [PATCH v3 0/3] perf report/annotate: Support average IPC and IPC coverage for function

From: Jin, Yao
Date: Wed Nov 28 2018 - 07:39:28 EST




On 11/28/2018 5:10 PM, Ingo Molnar wrote:

* Jin Yao <yao.jin@xxxxxxxxxxxxxxx> wrote:

Add supporting of displaying the average IPC and IPC coverage
percentage per function.

For example,

$ perf record -b ...
$ perf report -s symbol or
perf report -s symbol --stdio

Overhead Symbol IPC [IPC Coverage]
39.60% [.] __random 2.30 [ 54.8%]
18.02% [.] main 0.43 [ 54.3%]
14.21% [.] compute_flag 2.29 [100.0%]
14.16% [.] rand 0.36 [100.0%]
7.06% [.] __random_r 2.57 [ 70.5%]
6.85% [.] rand@plt 0.00 [ 0.0%]
...

$ 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

That's a nice feature: please add meaningful documentation, accessible
via the perf help system preferably, that outlines how the IPC metrics
should be interpreted and how they are useful when optimizing programs.

Thanks,

Ingo


Hi Ingo,

Thanks so much for your comments! I think I will add some explanations in perf/Documentation/perf-report.txt, maybe somewhere around the sort_key section (-s::).

Thanks
Jin Yao