[PATCHv4 00/57] perf c2c: Add new tool to analyze cacheline contention on NUMA systems

From: Jiri Olsa
Date: Thu Sep 22 2016 - 11:37:35 EST


hi,
sending new version of c2c patches (v3) originally posted in here:
http://lwn.net/Articles/588866/

I took the old set and reworked it to fit into current upstream code.
It follows the same logic as original patch and provides (almost) the
same stdio interface. In addition new TUI interface was added.

The perf c2c tool provides means for Shared Data C2C/HITM analysis.
It allows you to track down the cacheline contentions. The tool is
based on x86's load latency and precise store facility events provided
by Intel CPUs.

The tool was tested by Joe Mario and has proven to be useful and found
some cachelines contentions. Joe also wrote a blog about c2c tool with
examples located in here:

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

v4 changes:
- 4 patches already queued
- used u32 for c2c_stats instead of int [Stanislav]
- fixed NO_SLANG=1 compilation [Kim]
- add __hist_entry__snprintf helper [Arnaldo]

Code is also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/c2c_v4

Testing:
$ perf c2c record -a [workload]
$ perf c2c report [--stdio]
$ man perf-c2c

It's most likely you won't generate any remote HITMs on common
laptops, so to get results for local HITMs please use:

$ perf c2c report -d lcl [--stdio]

thanks,
jirka


Cc: "Michael Trapp" <michael.trapp@xxxxxxx>
Cc: "Long, Wai Man" <waiman.long@xxxxxxx>
Cc: Stanislav Ievlev <stanislav.ievlev@xxxxxxxxx>
Cc: Kim Phillips <kim.phillips@xxxxxxx>
---
Jiri Olsa (57):
perf tools: Add __hist_entry__snprintf function
perf tools: Introduce c2c_decode_stats function
perf tools: Introduce c2c_add_stats function
perf tools: Make reset_dimensions global
perf tools: Make output_field_add and sort_dimension__add global
perf tools: Make several sorting functions global
perf tools: Make several display functions global
perf tools: Make __hist_entry__snprintf function global
perf tools: Make hists__fprintf_headers function global
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 cpu cnt 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 browser
perf c2c report: Add 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

tools/perf/Build | 1 +
tools/perf/Documentation/perf-c2c.txt | 276 ++++
tools/perf/builtin-c2c.c | 2742 +++++++++++++++++++++++++++++++++
tools/perf/builtin.h | 1 +
tools/perf/perf.c | 1 +
tools/perf/ui/browsers/hists.c | 4 +-
tools/perf/ui/browsers/hists.h | 1 +
tools/perf/ui/hist.c | 2 +-
tools/perf/ui/stdio/hist.c | 12 +-
tools/perf/util/hist.c | 1 +
tools/perf/util/hist.h | 6 +
tools/perf/util/mem-events.c | 128 ++
tools/perf/util/mem-events.h | 37 +
tools/perf/util/sort.c | 18 +-
tools/perf/util/sort.h | 12 +
15 files changed, 3227 insertions(+), 15 deletions(-)
create mode 100644 tools/perf/Documentation/perf-c2c.txt
create mode 100644 tools/perf/builtin-c2c.c