linux/tools/perf/Documentation
Don Zickus 9b32ba71ba perf tools: Add dcacheline sort
In perf's 'mem-mode', one can get access to a whole bunch of details specific to a
particular sample instruction.  A bunch of those details relate to the data
address.

One interesting thing you can do with data addresses is to convert them into a unique
cacheline they belong too.  Organizing these data cachelines into similar groups and sorting
them can reveal cache contention.

This patch creates an alogorithm based on various sample details that can help group
entries together into data cachelines and allows 'perf report' to sort on it.

The algorithm relies on having proper mmap2 support in the kernel to help determine
if the memory map the data address belongs to is private to a pid or globally shared.

The alogortithm is as follows:

o group cpumodes together
o group entries with discovered maps together
o sort on major, minor, inode and inode generation numbers
o if userspace anon, then sort on pid
o sort on cachelines based on data addresses

The 'dcacheline' sort option in 'perf report' only works in 'mem-mode'.

Sample output:

 #
 # Samples: 206  of event 'cpu/mem-loads/pp'
 # Total weight : 2534
 # Sort order   : dcacheline,pid
 #
 # Overhead       Samples                                                          Data Cacheline       Command:  Pid
 # ........  ............  ......................................................................  ..................
 #
    13.22%             1  [k] 0xffff88042f08ebc0                                                       swapper:    0
     9.27%             1  [k] 0xffff88082e8cea80                                                       swapper:    0
     3.59%             2  [k] 0xffffffff819ba180                                                       swapper:    0
     0.32%             1  [k] arch_trigger_all_cpu_backtrace_handler_na.23901+0xffffffffffffffe0       swapper:    0
     0.32%             1  [k] timekeeper_seq+0xfffffffffffffff8                                        swapper:    0

Note:  Added a '+1' to symlen size in hists__calc_col_len to prevent the next column
from prematurely tabbing over and mis-aligning.  Not sure what the problem is.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Link: http://lkml.kernel.org/r/1401208087-181977-8-git-send-email-dzickus@redhat.com
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
2014-06-09 13:34:49 +02:00
..
android.txt perf tools: Add info about cross compiling for Android ARM 2012-10-31 12:17:49 -02:00
asciidoc.conf perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
examples.txt perf record: Remove -f/--force option 2013-07-08 17:37:25 -03:00
jit-interface.txt perf symbols: Add description of JIT interface 2012-08-13 14:55:02 -03:00
Makefile perf tools: Implement summary output for 'make install' 2013-10-11 12:18:11 -03:00
manpage-1.72.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-base.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-bold-literal.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-normal.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-suppress-sp.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
perf-annotate.txt perf annotate: Add basic support to event group view 2013-03-15 13:06:05 -03:00
perf-archive.txt perf archive: Remove duplicated 'runs' in man page 2013-12-09 15:21:45 -03:00
perf-bench.txt perf bench: Update manpage to mention numa and futex 2014-04-14 12:55:41 +02:00
perf-buildid-cache.txt perf buildid-cache: Add ability to add kcore to the cache 2013-10-14 12:20:38 -03:00
perf-buildid-list.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-diff.txt perf tools: Allow hpp fields to be sort keys 2014-05-21 11:45:34 +02:00
perf-evlist.txt perf evlist: Add --group option 2013-01-31 13:07:49 -03:00
perf-help.txt perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
perf-inject.txt perf inject: Merge sched_stat_* and sched_switch events 2012-10-26 11:22:25 -02:00
perf-kmem.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-kvm.txt perf kvm: Introduce option -v for perf kvm command. 2013-12-09 15:19:11 -03:00
perf-list.txt perf tools: Add support for pinned modifier 2013-08-07 17:35:40 -03:00
perf-lock.txt perf lock: Account for lock average wait time 2013-10-09 11:24:01 -03:00
perf-mem.txt perf mem: Clarify load-latency in documentation 2014-03-14 11:20:44 -03:00
perf-probe.txt perf probe: Clarify x86 register naming for perf probe 2014-03-14 11:20:44 -03:00
perf-record.txt perf/documentation: Add description for conditional branch filter 2014-06-05 12:30:27 +02:00
perf-report.txt perf tools: Add dcacheline sort 2014-06-09 13:34:49 +02:00
perf-sched.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-script-perl.txt perf script perl/python: Fix libexec scripts path in Documentation 2012-08-20 09:30:36 -03:00
perf-script-python.txt perf script: Remove workqueue-stats script 2013-01-24 16:40:53 -03:00
perf-script.txt perf script: Add --header/--header-only options 2013-12-10 16:51:07 -03:00
perf-stat.txt perf stat: Fix --delay option in man page 2014-01-13 10:06:24 -03:00
perf-test.txt perf test: Allow skipping tests 2013-01-24 16:40:53 -03:00
perf-timechart.txt perf timechart: Add --highlight option 2013-12-17 16:33:55 -03:00
perf-top.txt perf top: Add --children option 2014-06-01 14:35:07 +02:00
perf-trace.txt perf trace: Add summary only option 2013-11-12 16:24:38 -03:00
perf.txt perf: Fix few typos + cosmetics 2010-01-13 17:39:44 +01:00
perfconfig.example perf annotate browser: Read perf config file for settings 2012-05-29 22:06:30 -03:00