| 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 |