Messages in this thread | | | From | Adrian Hunter <> | Subject | [PATCH V5 00/25] perf tools: Introduce an abstraction for Instruction Tracing | Date | Sat, 7 Mar 2015 23:06:09 +0200 |
| |
Hi
Here is V5 of some more preparatory patches for Intel PT that introduce an abstraction for Instruction tracing.
The Intel PT driver is not yet in tip.
Peter, could we please have Alex's 14 patches applied to tip?
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.
Arnaldo, I have re-based on tip because of the conflict with your ordered-events changes. I will have a closer look at that next week.
Changes in V5:
perf tools: Add a user event for Instruction Tracing errors Print error count from stats->nr_events
perf session: Add hooks to allow transparent decoding of Instruction Tracing data Don't count Instruction Tracing errors (using stats->nr_events instead)
perf itrace: Add helpers for Instruction Tracing errors Don't count Instruction Tracing errors (using stats->nr_events instead)
perf itrace: Add option to synthesize events for transactions New patch
perf script: Add field option 'flags' to print sample flags New patch
Re-based on tip perf/core branch:
94ac003b665fc04f13a7ab3b2be896b9b9503451 Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
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 (25): 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 perf itrace: Add option to synthesize events for transactions perf script: Add field option 'flags' to print sample flags
tools/perf/Documentation/perf-inject.txt | 27 + tools/perf/Documentation/perf-record.txt | 2 + tools/perf/Documentation/perf-report.txt | 29 + tools/perf/Documentation/perf-script.txt | 38 +- tools/perf/Makefile.perf | 2 + tools/perf/builtin-buildid-list.c | 9 + tools/perf/builtin-inject.c | 172 +++- tools/perf/builtin-record.c | 167 +++- tools/perf/builtin-report.c | 11 + tools/perf/builtin-script.c | 73 +- tools/perf/config/Makefile | 5 + tools/perf/perf.h | 2 + tools/perf/tests/make | 2 + tools/perf/util/Build | 1 + tools/perf/util/dso.c | 2 + tools/perf/util/dso.h | 3 + tools/perf/util/event.c | 3 + tools/perf/util/event.h | 40 + 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 | 1249 ++++++++++++++++++++++++++++++ tools/perf/util/itrace.h | 557 +++++++++++++ tools/perf/util/record.c | 11 +- tools/perf/util/session.c | 148 +++- tools/perf/util/session.h | 6 + tools/perf/util/tool.h | 10 +- 28 files changed, 2639 insertions(+), 43 deletions(-) create mode 100644 tools/perf/util/itrace.c create mode 100644 tools/perf/util/itrace.h
Regards Adrian
| |