[PATCH V4 00/23] perf tools: Introduce an abstraction for Instruction Tracing
From: Adrian Hunter
Date: Thu Jan 08 2015 - 07:54:19 EST
Hi
Here is V4 of some more preparatory patches for Intel PT
that introduce an abstraction for Instruction tracing.
The master branch of the tree:
git://git.infradead.org/users/ahunter/linux-perf.git
contains these patches plus Intel PT and BTS and the kernel driver.
Changes in V4:
perf tools: Add build option NO_ITRACE to exclude Instruction Tracing
New patch
Re-based on Arnaldo's perf/core branch:
3dd417d4010c8e141b0f32121cdc8d82aa4a9c6a
perf tools: Remove some unused functions from color.c
Changes in V3:
perf tools: Add support for Instruction Trace recording
Added evsel as a parameter to itrace_record__init
perf record: Add basic Instruction Tracing support
Moved the call to itrace_record__init after parse
options so that evsel could be passed and the
selected events used to determine what kind of
Instruction Tracing to use e.g. Intel PT vs BTS
Re-based on Arnaldo's perf/core branch:
41e950c033b7df997d4b38653efe6554be9b96a7
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
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 (23):
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
perf tools: Add build option NO_ITRACE to exclude 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 | 6 +
tools/perf/builtin-buildid-list.c | 9 +
tools/perf/builtin-inject.c | 172 +++-
tools/perf/builtin-record.c | 186 ++++-
tools/perf/builtin-report.c | 12 +
tools/perf/builtin-script.c | 39 +-
tools/perf/config/Makefile | 4 +
tools/perf/perf.h | 2 +
tools/perf/tests/make | 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 | 1258 ++++++++++++++++++++++++++++++
tools/perf/util/itrace.h | 561 +++++++++++++
tools/perf/util/record.c | 11 +-
tools/perf/util/session.c | 148 +++-
tools/perf/util/session.h | 6 +
tools/perf/util/tool.h | 10 +-
27 files changed, 2624 insertions(+), 46 deletions(-)
create mode 100644 tools/perf/util/itrace.c
create mode 100644 tools/perf/util/itrace.h
Regards
Adrian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/