Messages in this thread | | | From | Adrian Hunter <> | Subject | [PATCH V2 00/22] perf tools: Introduce an abstraction for Instruction Tracing | Date | Thu, 20 Nov 2014 15:23:06 +0200 |
| |
Hi
Here is V2 of some more preparatory patches for Intel PT that introduce an abstraction for Instruction tracing.
Changes in V2:
Dropped patches already applied.
Re-based on Arnaldo's perf/core branch:
a84808083688d82d7f1e5786ccf5df0ff7d448cb perf tools: Only override the default :tid comm entry
The abstraction has two separate aspects: 1. recording Instruction Trace data 2. processing Instruction Trace data
Recording consists of mmapping a separate buffer and copying the data into the perf.data file. The buffer is an AUX area buffer although the details of the AUX area are not implemented because the kernel support is pending. The data is written preceded by a new user event PERF_RECORD_ITRACE. The data is too big to fit in the event but follows immediately afterward. Session processing has to skip to get to the next event header in a similar fashion to the existing PERF_RECORD_HEADER_TRACING_DATA event. The main recording patches are:
perf evlist: Add initial support for mmapping an Instruction Trace buffer perf tools: Add user events for Instruction Tracing perf tools: Add support for Instruction Trace recording perf record: Add basic Instruction Tracing support
Processing consists of providing hooks in session processing to enable an Instruction Trace decoder to see all the events and deliver synthesized events transparently into the event stream. The main processing patch is:
perf session: Add hooks to allow transparent decoding of Instruction Tracing data
Adrian Hunter (22): perf header: Add Instruction Tracing feature perf evlist: Add initial support for mmapping an Instruction Trace buffer perf tools: Add user events for Instruction Tracing perf tools: Add support for Instruction Trace recording perf record: Add basic Instruction Tracing support perf record: Extend -m option for Instruction Tracing mmap pages perf tools: Add a user event for Instruction Tracing errors perf session: Add hooks to allow transparent decoding of Instruction Tracing data perf session: Add Instruction Tracing options perf itrace: Add helpers for Instruction Tracing errors perf itrace: Add helpers for queuing Instruction Tracing data perf itrace: Add a heap for sorting Instruction Tracing queues perf itrace: Add processing for Instruction Tracing events perf itrace: Add a hashtable for caching decoded instructions perf tools: Add member to struct dso for an instruction cache perf script: Add Instruction Tracing support perf script: Always allow fields 'addr' and 'cpu' for itrace perf report: Add Instruction Tracing support perf inject: Re-pipe Instruction Tracing events perf inject: Add Instruction Tracing support perf tools: Add Instruction Tracing index perf tools: Hit all build ids when Instruction Tracing
tools/perf/Documentation/perf-inject.txt | 27 + tools/perf/Documentation/perf-record.txt | 2 + tools/perf/Documentation/perf-report.txt | 28 + tools/perf/Documentation/perf-script.txt | 28 + tools/perf/Makefile.perf | 2 + tools/perf/builtin-buildid-list.c | 9 + tools/perf/builtin-inject.c | 157 +++- tools/perf/builtin-record.c | 173 +++- tools/perf/builtin-report.c | 12 + tools/perf/builtin-script.c | 39 +- tools/perf/perf.h | 2 + tools/perf/util/dso.c | 2 + tools/perf/util/dso.h | 3 + tools/perf/util/event.c | 3 + tools/perf/util/event.h | 38 + tools/perf/util/evlist.c | 70 +- tools/perf/util/evlist.h | 6 + tools/perf/util/header.c | 36 + tools/perf/util/header.h | 1 + tools/perf/util/itrace.c | 1255 ++++++++++++++++++++++++++++++ tools/perf/util/itrace.h | 447 +++++++++++ tools/perf/util/record.c | 11 +- tools/perf/util/session.c | 148 +++- tools/perf/util/session.h | 6 + tools/perf/util/tool.h | 10 +- 25 files changed, 2468 insertions(+), 47 deletions(-) create mode 100644 tools/perf/util/itrace.c create mode 100644 tools/perf/util/itrace.h
Regards Adrian
| |