Re: [PATCH 4/7] perf diff: Fix to sort by baseline field by default

From: Arnaldo Carvalho de Melo
Date: Mon Dec 22 2014 - 09:45:27 EST


Em Mon, Dec 22, 2014 at 01:44:12PM +0900, Namhyung Kim escreveu:
> The currently perf diff didn't add the baseline and delta (or other
> compute) fields to the sort list so output will be sorted by other
> fields like alphabetical order of DSO or symbol as below example.
>
> Fix it by adding hpp formats for the fields and provides default
> compare functions.
>
> Before:
>
> $ perf diff
> # Event 'cycles'
> #
> # Baseline Delta Shared Object Symbol
> # ........ ....... .................. ...............................
> #
> [bridge] [k] ip_sabotage_in
> [btrfs] [k] __etree_search.constprop.47
> 0.01% [btrfs] [k] btrfs_file_mmap
> 0.01% -0.01% [btrfs] [k] btrfs_getattr
> [e1000e] [k] e1000_watchdog
> 0.00% [kernel.vmlinux] [k] PageHuge
> 0.00% [kernel.vmlinux] [k] __acct_update_integrals
> 0.00% [kernel.vmlinux] [k] __activate_page
> [kernel.vmlinux] [k] __alloc_fd
> 0.02% +0.02% [kernel.vmlinux] [k] __alloc_pages_nodemask
> ...
>
> After:
>
> # Baseline Delta Shared Object Symbol
> # ........ ....... .................. ................................
> #
> 24.73% -4.62% perf [.] append_chain_children
> 7.96% -1.29% perf [.] dso__find_symbol
> 6.97% -2.07% libc-2.20.so [.] vfprintf
> 4.61% +0.88% libc-2.20.so [.] __fprintf_chk
> 4.41% +2.43% perf [.] sort__comm_cmp
> 4.10% -0.16% perf [.] comm__str
> 4.03% -0.93% perf [.] machine__findnew_thread_time
> 3.82% +3.09% perf [.] __hists__add_entry
> 2.95% -0.18% perf [.] sort__dso_cmp
> ...

Looks better, here I tried running 'perf record usleep 1' in quick
succession to then run 'perf diff' before and after this patch, got:

Before:

[ssdandy ~]$ cat /tmp/before
# Event 'cycles'
#
# Baseline Delta Shared Object Symbol
# ........ ....... ................ ..............................
#
+36.29% [kernel.vmlinux] [k] __split_vma.isra.31
34.55% [kernel.vmlinux] [k] copy_user_generic_unrolled
+2.45% [kernel.vmlinux] [k] local_clock
0.11% +0.02% [kernel.vmlinux] [k] native_write_msr_safe
2.12% [kernel.vmlinux] [k] perf_event_comm_output
+61.13% [kernel.vmlinux] [k] unmap_page_range
63.22% libc-2.17.so [.] 0x000000000007c3e0
[acme@ssdandy ~]$

After:

[acme@ssdandy linux]$ perf diff
# Event 'cycles'
#
# Baseline Delta Shared Object Symbol
# ........ ....... ................ ..............................
#
63.22% libc-2.17.so [.] 0x000000000007c3e0
34.55% [kernel.vmlinux] [k] copy_user_generic_unrolled
2.12% [kernel.vmlinux] [k] perf_event_comm_output
0.11% +0.02% [kernel.vmlinux] [k] native_write_msr_safe
+36.29% [kernel.vmlinux] [k] __split_vma.isra.31
+2.45% [kernel.vmlinux] [k] local_clock
+61.13% [kernel.vmlinux] [k] unmap_page_range
[acme@ssdandy linux]$

Which was ok up to the point where symbols that only appeared on the
second run were not sorted by delta, can you fix that?

Please let me know if it is better to apply this one then a followup to
sort the deltas or if a combined patch to achieve both is best.

I.e.:

[acme@ssdandy linux]$ perf diff
# Event 'cycles'
#
# Baseline Delta Shared Object Symbol
# ........ ....... ................ ..............................
#
63.22% libc-2.17.so [.] 0x000000000007c3e0
34.55% [kernel.vmlinux] [k] copy_user_generic_unrolled
2.12% [kernel.vmlinux] [k] perf_event_comm_output
0.11% +0.02% [kernel.vmlinux] [k] native_write_msr_safe
+61.13% [kernel.vmlinux] [k] unmap_page_range
+36.29% [kernel.vmlinux] [k] __split_vma.isra.31
+2.45% [kernel.vmlinux] [k] local_clock

[acme@ssdandy linux]$

Humm, but then wouldn't we be more interested in sorting _everything_ by
delta?

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/