Intel Branch Trace Store
========================

Overview
========

Intel BTS could be regarded as a predecessor to Intel PT and has some
similarities because it can also identify every branch a program takes.  A
notable difference is that Intel BTS has no timing information and as a
consequence the present implementation is limited to per-thread recording.

While decoding Intel BTS does not require walking the object code, the object
code is still needed to pair up calls and returns correctly, consequently much
of the Intel PT documentation applies also to Intel BTS.  Refer to the Intel PT
documentation and consider that the PMU 'intel_bts' can usually be used in
place of 'intel_pt' in the examples provided, with the proviso that per-thread
recording must also be stipulated i.e. the --per-thread option for
'perf record'.


perf record
===========

new event
---------

The Intel BTS kernel driver creates a new PMU for Intel BTS.  The perf record
option is:

	-e intel_bts//

Currently Intel BTS is limited to per-thread tracing so the --per-thread option
is also needed.


snapshot option
---------------

The snapshot option is the same as Intel PT (refer Intel PT documentation).


auxtrace mmap size option
-----------------------

The mmap size option is the same as Intel PT (refer Intel PT documentation).


perf script
===========

By default, perf script will decode trace data found in the perf.data file.
This can be further controlled by option --itrace.  The --itrace option is
the same as Intel PT (refer Intel PT documentation) except that neither
"instructions" events nor "transactions" events (and consequently call
chains) are supported.

To disable trace decoding entirely, use the option --no-itrace.


dump option
-----------

perf script has an option (-D) to "dump" the events i.e. display the binary
data.

When -D is used, Intel BTS packets are displayed.

To disable the display of Intel BTS packets, combine the -D option with
--no-itrace.


perf report
===========

By default, perf report will decode trace data found in the perf.data file.
This can be further controlled by new option --itrace exactly the same as
perf script.


perf inject
===========

perf inject also accepts the --itrace option in which case tracing data is
removed and replaced with the synthesized events. e.g.

	perf inject --itrace -i perf.data -o perf.data.new
