lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 6 Jun 2019 12:06:49 +0800
From:   "Jin, Yao" <yao.jin@...ux.intel.com>
To:     Jiri Olsa <jolsa@...hat.com>
Cc:     acme@...nel.org, jolsa@...nel.org, peterz@...radead.org,
        mingo@...hat.com, alexander.shishkin@...ux.intel.com,
        Linux-kernel@...r.kernel.org, ak@...ux.intel.com,
        kan.liang@...el.com, yao.jin@...el.com
Subject: Re: [PATCH v2 6/7] perf diff: Print the basic block cycles diff



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


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ