[GIT PULL 00/52] New Tool: perf c2c

Arnaldo Carvalho de Melo
2016-10-20T15:10:00Z

Hi Ingo,

Please consider pulling into tip/perf/core,

Thanks,

- Arnaldo

The following changes since commit 10b37cb59fa1e61fec1386f324615e0e8202cd87:

Merge tag 'perf-vendor_events-for-mingo-20161018' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-10-19 15:22:26 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-c2c-for-mingo-20161020

for you to fetch changes up to 535bbde62701b2bb298063e9dfa007e8a1ff95d1:

perf c2c report: Add --show-all option (2016-10-19 13:18:31 -0300)

----------------------------------------------------------------
- The 'perf c2c' tool provides means for Shared Data C2C/HITM analysis.

It allows you to track down cacheline contention. The tool is based
on x86's load latency and precise store facility events provided by
Intel CPUs.

It was tested by Joe Mario and has proven to be useful, finding some
cacheline contentions. Joe also wrote a blog about c2c tool with
examples:

https://joemario.github.io/blog/2016/09/01/c2c-blog/

Excerpt of the content on this site:

---
At a high level, “perf c2c” will show you:

* The cachelines where false sharing was detected.
* The readers and writers to those cachelines, and the offsets where those accesses occurred.
* The pid, tid, instruction addr, function name, binary object name for those readers and writers.
* The source file and line number for each reader and writer.
* The average load latency for the loads to those cachelines.
* Which numa nodes the samples a cacheline came from and which CPUs were involved.

Using perf c2c is similar to using the Linux perf tool today.
First collect data with “perf c2c record” Then generate a report output with “perf c2c report”
---

There one finds extensive details on using the tool, with tips on
reducing the volume of samples while still capturing enough to do
its job. (Dick Fowles, Joe Mario, Don Zickus, Jiri Olsa)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Jiri Olsa (52):
perf c2c: Introduce c2c_decode_stats function
perf c2c: Introduce c2c_add_stats function
perf c2c: Add c2c command
perf c2c: Add record subcommand
perf c2c: Add report subcommand
perf c2c report: Add dimension support
perf c2c report: Add sort_entry dimension support
perf c2c report: Fallback to standard dimensions
perf c2c report: Add sample processing
perf c2c report: Add cacheline hists processing
perf c2c report: Decode c2c_stats for hist entries
perf c2c report: Add header macros
perf c2c report: Add 'dcacheline' dimension key
perf c2c report: Add 'offset' dimension key
perf c2c report: Add 'iaddr' dimension key
perf c2c report: Add hitm related dimension keys
perf c2c report: Add stores related dimension keys
perf c2c report: Add loads related dimension keys
perf c2c report: Add llc and remote loads related dimension keys
perf c2c report: Add llc load miss dimension key
perf c2c report: Add total record sort key
perf c2c report: Add total loads sort key
perf c2c report: Add hitm percent sort key
perf c2c report: Add hitm/store percent related sort keys
perf c2c report: Add dram related sort keys
perf c2c report: Add 'pid' sort key
perf c2c report: Add 'tid' sort key
perf c2c report: Add 'symbol' and 'dso' sort keys
perf c2c report: Add 'node' sort key
perf c2c report: Add stats related sort keys
perf c2c report: Add 'cpucnt' sort key
perf c2c report: Add src line sort key
perf c2c report: Setup number of header lines for hists
perf c2c report: Set final resort fields
perf c2c report: Add stdio output support
perf c2c report: Add main TUI browser
perf c2c report: Add TUI cacheline browser
perf c2c report: Add global stats stdio output
perf c2c report: Add shared cachelines stats stdio output
perf c2c report: Add c2c related stats stdio output
perf c2c report: Allow to report callchains
perf c2c report: Limit the cachelines table entries
perf c2c report: Add support to choose local HITMs
perf c2c report: Allow to set cacheline sort fields
perf c2c report: Recalc width of global sort entries
perf c2c report: Add cacheline index entry
perf c2c report: Add support to manage symbol name length
perf c2c report: Iterate node display in browser
perf c2c report: Add help windows
perf c2c: Add man page and credits
perf c2c report: Add --no-source option
perf c2c report: Add --show-all option

tools/perf/Build | 1 +
tools/perf/Documentation/perf-c2c.txt | 282 ++++
tools/perf/builtin-c2c.c | 2754 +++++++++++++++++++++++++++++++++
tools/perf/builtin.h | 1 +
tools/perf/perf.c | 1 +
tools/perf/ui/browsers/hists.c | 2 +-
tools/perf/ui/browsers/hists.h | 1 +
tools/perf/util/hist.c | 1 +
tools/perf/util/hist.h | 1 +
tools/perf/util/mem-events.c | 128 ++
tools/perf/util/mem-events.h | 37 +
tools/perf/util/sort.c | 2 +-
tools/perf/util/sort.h | 1 +
13 files changed, 3210 insertions(+), 2 deletions(-)
create mode 100644 tools/perf/Documentation/perf-c2c.txt
create mode 100644 tools/perf/builtin-c2c.c