[tip:perf/core] perf report: Enable sorting by srcline as key

2017-03-27 Thread tip-bot for Milian Wolff
Commit-ID:  5dfa210e407d0fedf746958bff206995bd46570d
Gitweb: http://git.kernel.org/tip/5dfa210e407d0fedf746958bff206995bd46570d
Author: Milian Wolff 
AuthorDate: Sat, 18 Mar 2017 22:49:28 +0100
Committer:  Arnaldo Carvalho de Melo 
CommitDate: Mon, 27 Mar 2017 12:13:28 -0300

perf report: Enable sorting by srcline as key

Often it is interesting to know how costly a given source line is in
total. Previously, one had to build these sums manually based on all
addresses that pointed to the same source line. This patch introduces
srcline as a sort key, which will do the aggregation for us.

Paired with the recent addition of showing inline frames, this makes
perf report much more useful for many C++ work loads.

The following shows the new feature in action. First, let's show the
status quo output when we sort by address. The result contains many hist
entries that generate the same output:

  
  $ perf report --stdio --inline -g address
  # Children  Self  Command   Shared ObjectSymbol
  #       ...  
.
  #
  99.89%35.34%  cpp-inlining  cpp-inlining [.] main
|
|--64.55%--main complex:655
|  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
|  /usr/include/c++/6.3.1/complex:664 (inline)
|  |
|  |--60.31%--hypot +20
|  |  |
|  |  |--8.52%--__hypot_finite +273
|  |  |
|  |  |--7.32%--__hypot_finite +411
...
 --35.34%--_start +4194346
   __libc_start_main +241
   |
   |--6.65%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
   |
   |--2.70%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
   |
   |--1.69%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
  ...
  

With this patch and `-g srcline` we instead get the following output:

  
  $ perf report --stdio --inline -g srcline
  # Children  Self  Command   Shared ObjectSymbol
  #       ...  
.
  #
  99.89%35.34%  cpp-inlining  cpp-inlining [.] main
|
|--64.55%--main complex:655
|  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
|  /usr/include/c++/6.3.1/complex:664 (inline)
|  |
|  |--64.02%--hypot
|  |  |
|  |   --59.81%--__hypot_finite
|  |
|   --0.53%--cabs
|
 --35.34%--_start
   __libc_start_main
   |
   |--12.48%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
  ...
  

Signed-off-by: Milian Wolff 
Cc: Jiri Olsa 
Cc: Yao Jin 
Link: http://lkml.kernel.org/r/20170318214928.9047-1-milian.wo...@kdab.com
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/Documentation/perf-report.txt |  1 +
 

[tip:perf/core] perf report: Enable sorting by srcline as key

2017-03-27 Thread tip-bot for Milian Wolff
Commit-ID:  5dfa210e407d0fedf746958bff206995bd46570d
Gitweb: http://git.kernel.org/tip/5dfa210e407d0fedf746958bff206995bd46570d
Author: Milian Wolff 
AuthorDate: Sat, 18 Mar 2017 22:49:28 +0100
Committer:  Arnaldo Carvalho de Melo 
CommitDate: Mon, 27 Mar 2017 12:13:28 -0300

perf report: Enable sorting by srcline as key

Often it is interesting to know how costly a given source line is in
total. Previously, one had to build these sums manually based on all
addresses that pointed to the same source line. This patch introduces
srcline as a sort key, which will do the aggregation for us.

Paired with the recent addition of showing inline frames, this makes
perf report much more useful for many C++ work loads.

The following shows the new feature in action. First, let's show the
status quo output when we sort by address. The result contains many hist
entries that generate the same output:

  
  $ perf report --stdio --inline -g address
  # Children  Self  Command   Shared ObjectSymbol
  #       ...  
.
  #
  99.89%35.34%  cpp-inlining  cpp-inlining [.] main
|
|--64.55%--main complex:655
|  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
|  /usr/include/c++/6.3.1/complex:664 (inline)
|  |
|  |--60.31%--hypot +20
|  |  |
|  |  |--8.52%--__hypot_finite +273
|  |  |
|  |  |--7.32%--__hypot_finite +411
...
 --35.34%--_start +4194346
   __libc_start_main +241
   |
   |--6.65%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
   |
   |--2.70%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
   |
   |--1.69%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
  ...
  

With this patch and `-g srcline` we instead get the following output:

  
  $ perf report --stdio --inline -g srcline
  # Children  Self  Command   Shared ObjectSymbol
  #       ...  
.
  #
  99.89%35.34%  cpp-inlining  cpp-inlining [.] main
|
|--64.55%--main complex:655
|  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
|  /usr/include/c++/6.3.1/complex:664 (inline)
|  |
|  |--64.02%--hypot
|  |  |
|  |   --59.81%--__hypot_finite
|  |
|   --0.53%--cabs
|
 --35.34%--_start
   __libc_start_main
   |
   |--12.48%--main random.tcc:3326
   |  
/home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39
 (inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1809 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:1818 
(inline)
   |  /usr/include/c++/6.3.1/bits/random.h:185 
(inline)
  ...
  

Signed-off-by: Milian Wolff 
Cc: Jiri Olsa 
Cc: Yao Jin 
Link: http://lkml.kernel.org/r/20170318214928.9047-1-milian.wo...@kdab.com
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/Documentation/perf-report.txt |  1 +
 tools/perf/ui/browsers/hists.c   |  3 +-
 tools/perf/ui/stdio/hist.c   |  3 +-
 tools/perf/util/annotate.c