perf-c2c(1)
===========

NAME
----
perf-c2c - Shared Data C2C/HITM Analyzer.

SYNOPSIS
--------
[verse]
'perf c2c record' [<options>] <command>
'perf c2c record' [<options>] -- [<record command options>] <command>
'perf c2c report' [<options>]

DESCRIPTION
-----------
C2C stands for Cache To Cache.

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. These events provide:
  - memory address of the access
  - type of the access (load and store details)
  - latency (in cycles) of the load access

The c2c tool provide means to record this data and report back access details
for cachelines with highest contention - highest number of HITM accesses.

The basic workflow with this tool follows the standard record/report phase.
User uses the record command to record events data and report command to
display it.


RECORD OPTIONS
--------------
-e::
--event=::
	Select the PMU event. Use 'perf mem record -e list'
	to list available events.

-v::
--verbose::
	Be more verbose (show counter open errors, etc).

-l::
--ldlat::
	Configure mem-loads latency.

-k::
--all-kernel::
	Configure all used events to run in kernel space.

-u::
--all-user::
	Configure all used events to run in user space.

REPORT OPTIONS
--------------
-k::
--vmlinux=<file>::
	vmlinux pathname

-v::
--verbose::
	Be more verbose (show counter open errors, etc).

-i::
--input::
	Specify the input file to process.

-N::
--node-info::
	Show extra node info in report (see NODE INFO section)

-c::
--coalesce::
	Specify sorintg fields for single cacheline display.
	Following fields are available: tid,pid,iaddr,dso
	(see COALESCE)

-g::
--call-graph::
	Setup callchains parameters.
	Please refer to perf-report man page for details.

--stdio::
	Force the stdio output (see STDIO OUTPUT)

--stats::
	Display only statistic tables and force stdio mode.

--full-symbols::
	Display full length of symbols.

--no-source::
	Do not display Source:Line column.

--show-all::
	Show all captured HITM lines, with no regard to HITM % 0.0005 limit.

-f::
--force::
	Don't do ownership validation.

-d::
--display::
	Siwtch to HITM type (rmt, lcl) to display and sort on. Total HITMs as default.

C2C RECORD
----------
The perf c2c record command setup options related to HITM cacheline analysis
and calls standard perf record command.

Following perf record options are configured by default:
(check perf record man page for details)

  -W,-d,--sample-cpu

Unless specified otherwise with '-e' option, following events are monitored by
default:

  cpu/mem-loads,ldlat=30/P
  cpu/mem-stores/P

User can pass any 'perf record' option behind '--' mark, like (to enable
callchains and system wide monitoring):

  $ perf c2c record -- -g -a

Please check RECORD OPTIONS section for specific c2c record options.

C2C REPORT
----------
The perf c2c report command displays shared data analysis.  It comes in two
display modes: stdio and tui (default).

The report command workflow is following:
  - sort all the data based on the cacheline address
  - store access details for each cacheline
  - sort all cachelines based on user settings
  - display data

In general perf report output consist of 2 basic views:
  1) most expensive cachelines list
  2) offsets details for each cacheline

For each cacheline in the 1) list we display following data:
(Both stdio and TUI modes follow the same fields output)

  Index
  - zero based index to identify the cacheline

  Cacheline
  - cacheline address (hex number)

  Total records
  - sum of all cachelines accesses

  Rmt/Lcl Hitm
  - cacheline percentage of all Remote/Local HITM accesses

  LLC Load Hitm - Total, Lcl, Rmt
  - count of Total/Local/Remote load HITMs

  Store Reference - Total, L1Hit, L1Miss
    Total - all store accesses
    L1Hit - store accesses that hit L1
    L1Hit - store accesses that missed L1

  Load Dram
  - count of local and remote DRAM accesses

  LLC Ld Miss
  - count of all accesses that missed LLC

  Total Loads
  - sum of all load accesses

  Core Load Hit - FB, L1, L2
  - count of load hits in FB (Fill Buffer), L1 and L2 cache

  LLC Load Hit - Llc, Rmt
  - count of LLC and Remote load hits

For each offset in the 2) list we display following data:

  HITM - Rmt, Lcl
  - % of Remote/Local HITM accesses for given offset within cacheline

  Store Refs - L1 Hit, L1 Miss
  - % of store accesses that hit/missed L1 for given offset within cacheline

  Data address - Offset
  - offset address

  Pid
  - pid of the process responsible for the accesses

  Tid
  - tid of the process responsible for the accesses

  Code address
  - code address responsible for the accesses

  cycles - rmt hitm, lcl hitm, load
    - sum of cycles for given accesses - Remote/Local HITM and generic load

  cpu cnt
    - number of cpus that participated on the access

  Symbol
    - code symbol related to the 'Code address' value

  Shared Object
    - shared object name related to the 'Code address' value

  Source:Line
    - source information related to the 'Code address' value

  Node
    - nodes participating on the access (see NODE INFO section)

NODE INFO
---------
The 'Node' field displays nodes that accesses given cacheline
offset. Its output comes in 3 flavors:
  - node IDs separated by ','
  - node IDs with stats for each ID, in following format:
      Node{cpus %hitms %stores}
  - node IDs with list of affected CPUs in following format:
      Node{cpu list}

User can switch between above flavors with -N option or
use 'n' key to interactively switch in TUI mode.

COALESCE
--------
User can specify how to sort offsets for cacheline.

Following fields are available and governs the final
output fields set for caheline offsets output:

  tid   - coalesced by process TIDs
  pid   - coalesced by process PIDs
  iaddr - coalesced by code address, following fields are displayed:
             Code address, Code symbol, Shared Object, Source line
  dso   - coalesced by shared object

By default the coalescing is setup with 'pid,tid,iaddr'.

STDIO OUTPUT
------------
The stdio output displays data on standard output.

Following tables are displayed:
  Trace Event Information
  - overall statistics of memory accesses

  Global Shared Cache Line Event Information
  - overall statistics on shared cachelines

  Shared Data Cache Line Table
  - list of most expensive cachelines

  Shared Cache Line Distribution Pareto
  - list of all accessed offsets for each cacheline

TUI OUTPUT
----------
The TUI output provides interactive interface to navigate
through cachelines list and to display offset details.

For details please refer to the help window by pressing '?' key.

CREDITS
-------
Although Don Zickus, Dick Fowles and Joe Mario worked together
to get this implemented, we got lots of early help from Arnaldo
Carvalho de Melo, Stephane Eranian, Jiri Olsa and Andi Kleen.

C2C BLOG
--------
Check Joe's blog on c2c tool for detailed use case explanation:
  https://joemario.github.io/blog/2016/09/01/c2c-blog/

SEE ALSO
--------
linkperf:perf-record[1], linkperf:perf-mem[1]
