From: "Jin, Yao" <yao.jin@linux.intel.com>
To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
mingo@redhat.com, alexander.shishkin@linux.intel.com
Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com,
kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v2 0/7] perf diff: diff cycles at basic block level
Date: Mon, 3 Jun 2019 14:51:54 +0800 [thread overview]
Message-ID: <e0c769be-f548-f6ef-3667-118d37fe888c@linux.intel.com> (raw)
In-Reply-To: <1559572577-25436-1-git-send-email-yao.jin@linux.intel.com>
On 6/3/2019 10:36 PM, Jin Yao wrote:
> In some cases small changes in hot loops can show big differences.
> But it's difficult to identify these differences.
>
> perf diff currently can only diff symbols (functions). We can also expand
> it to diff cycles of individual programs blocks as reported by timed LBR.
> This would allow to identify changes in specific code accurately.
>
> With this patch set, for example,
>
> # perf record -b ./div
> # perf record -b ./div
> # perf diff -s cycles
>
Sorry, the command line should be perf diff -c cycles.
Thanks
Jin Yao
> # 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
>
> The 'cycles' is a new perf-diff computation selection, which enables
> the displaying of cycles difference of same program basic block amongst
> two perf.data. The program basic block is the code block between two
> branches in a function.
>
> v2:
> ---
> Keep standard perf diff format.
>
> Following is the v1 output.
>
> # perf diff --basic-block
>
> # Cycles diff Basic block (start:end)
> # ........... .......................
> #
> -208 hrtimer_interrupt (30b9e0:30ba42)
> -157 update_blocked_averages (2bf9f2:2bfa63)
> -126 interrupt_entry (c00880:c0093a)
> -86 hrtimer_interrupt (30bb29:30bb32)
> -74 hrtimer_interrupt (30ba65:30bac4)
> -56 update_blocked_averages (2bf980:2bf9d3)
> 48 update_blocked_averages (2bf934:2bf942)
> -35 native_write_msr (267900:26790b)
> 26 native_irq_return_iret (c00a27:c00a27)
> 22 rcu_check_callbacks (2febb6:2febdc)
> -21 __hrtimer_run_queues (30b220:30b2a3)
> 19 pvclock_gtod_notify (14ba0:14c1b)
> -18 task_tick_fair (2c5d29:2c5d41)
>
> Jin Yao (7):
> perf util: Create block_info structure
> perf util: Add block_info in hist_entry
> perf diff: Check if all data files with branch stacks
> perf diff: Use hists to manage basic blocks per symbol
> perf diff: Link same basic blocks among different data files
> perf diff: Print the basic block cycles diff
> perf diff: Documentation -c cycles option
>
> tools/perf/Documentation/perf-diff.txt | 14 +-
> tools/perf/builtin-diff.c | 373 ++++++++++++++++++++++++++++++++-
> tools/perf/ui/stdio/hist.c | 26 +++
> tools/perf/util/hist.c | 42 +++-
> tools/perf/util/hist.h | 9 +
> tools/perf/util/sort.h | 8 +
> tools/perf/util/symbol.c | 22 ++
> tools/perf/util/symbol.h | 23 ++
> 8 files changed, 509 insertions(+), 8 deletions(-)
>
next prev parent reply other threads:[~2019-06-03 6:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 14:36 Jin Yao
2019-06-03 6:51 ` Jin, Yao [this message]
2019-06-03 14:36 ` [PATCH v2 1/7] perf util: Create block_info structure Jin Yao
2019-06-03 14:36 ` [PATCH v2 2/7] perf util: Add block_info in hist_entry Jin Yao
2019-06-03 14:36 ` [PATCH v2 3/7] perf diff: Check if all data files with branch stacks Jin Yao
2019-06-03 14:36 ` [PATCH v2 4/7] perf diff: Use hists to manage basic blocks per symbol Jin Yao
2019-06-05 11:44 ` Jiri Olsa
2019-06-06 1:15 ` Jin, Yao
2019-06-08 11:41 ` Jin, Yao
2019-06-11 2:22 ` Jin, Yao
2019-06-11 8:56 ` Jiri Olsa
2019-06-12 6:11 ` Jin, Yao
2019-06-12 7:44 ` Jiri Olsa
2019-06-12 12:54 ` Jin, Yao
2019-06-05 11:44 ` Jiri Olsa
2019-06-06 1:26 ` Jin, Yao
2019-06-05 11:44 ` Jiri Olsa
2019-06-06 1:57 ` Jin, Yao
2019-06-03 14:36 ` [PATCH v2 5/7] perf diff: Link same basic blocks among different data files Jin Yao
2019-06-03 14:36 ` [PATCH v2 6/7] perf diff: Print the basic block cycles diff Jin Yao
2019-06-05 11:44 ` Jiri Olsa
2019-06-06 4:06 ` Jin, Yao
2019-06-05 11:44 ` Jiri Olsa
2019-06-06 2:02 ` Jin, Yao
2019-06-03 14:36 ` [PATCH v2 7/7] perf diff: Documentation -c cycles option Jin Yao
2019-06-05 11:44 ` [PATCH v2 0/7] perf diff: diff cycles at basic block level Jiri Olsa
2019-06-06 1:05 ` Jin, Yao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e0c769be-f548-f6ef-3667-118d37fe888c@linux.intel.com \
--to=yao.jin@linux.intel.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®