[PATCH V5 24/25] perf itrace: Add option to synthesize events for transactions

From: Adrian Hunter
Date: Sat Mar 07 2015 - 16:10:01 EST


Add Instruction Tracing option 'x' to synthesize events for
transactions. This will be used by Intel PT to synthesize
an event record for each TSX start, commit or abort.

Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
---
tools/perf/Documentation/perf-report.txt | 9 +++++----
tools/perf/Documentation/perf-script.txt | 9 +++++----
tools/perf/util/itrace.c | 5 ++++-
tools/perf/util/itrace.h | 2 ++
4 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 835d1e0..1a3c49b 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -326,11 +326,12 @@ OPTIONS
b synthesize branches events
c synthesize branches events (calls only)
r synthesize branches events (returns only)
+ x synthesize transactions events
e synthesize error events
d create a debug log
- g synthesize a call chain for instructions events
+ g synthesize a call chain (use with i or x)

- The default is all events i.e. the same as -Zibe
+ The default is all events i.e. the same as -Zibxe

In addition, the period (default 1000) for instructions events can be
specified in units of:
@@ -341,8 +342,8 @@ OPTIONS
us microseconds
ns nanoseconds

- Also the call chain size (default 16, max. 1024) for instructions
- events can be specified.
+ Also the call chain size (default 16, max. 1024) for instructions or
+ transactions events can be specified.

To disable decoding entirely, use --no-itrace.

diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt
index 9a4aea1..2c89ca7 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -223,11 +223,12 @@ OPTIONS
b synthesize branches events
c synthesize branches events (calls only)
r synthesize branches events (returns only)
+ x synthesize transactions events
e synthesize error events
d create a debug log
- g synthesize a call chain for instructions events
+ g synthesize a call chain (use with i or x)

- The default is all events i.e. the same as -Zibe
+ The default is all events i.e. the same as -Zibxe

In addition, the period (default 1000) for instructions events can be
specified in units of:
@@ -238,8 +239,8 @@ OPTIONS
us microseconds
ns nanoseconds

- Also the call chain size (default 16, max. 1024) for instructions
- events can be specified.
+ Also the call chain size (default 16, max. 1024) for instructions or
+ transactions events can be specified.

To disable decoding entirely, use --no-itrace.

diff --git a/tools/perf/util/itrace.c b/tools/perf/util/itrace.c
index 9eac087..9990e5c 100644
--- a/tools/perf/util/itrace.c
+++ b/tools/perf/util/itrace.c
@@ -893,6 +893,7 @@ void itrace_synth_opts__set_default(struct itrace_synth_opts *synth_opts)
{
synth_opts->instructions = true;
synth_opts->branches = true;
+ synth_opts->transactions = true;
synth_opts->errors = true;
synth_opts->period_type = PERF_ITRACE_DEFAULT_PERIOD_TYPE;
synth_opts->period = PERF_ITRACE_DEFAULT_PERIOD;
@@ -960,6 +961,9 @@ int itrace_parse_synth_opts(const struct option *opt, const char *str,
case 'b':
synth_opts->branches = true;
break;
+ case 'x':
+ synth_opts->transactions = true;
+ break;
case 'e':
synth_opts->errors = true;
break;
@@ -975,7 +979,6 @@ int itrace_parse_synth_opts(const struct option *opt, const char *str,
synth_opts->returns = true;
break;
case 'g':
- synth_opts->instructions = true;
synth_opts->callchain = true;
synth_opts->callchain_sz =
PERF_ITRACE_DEFAULT_CALLCHAIN_SZ;
diff --git a/tools/perf/util/itrace.h b/tools/perf/util/itrace.h
index d25acc1..e5b6240 100644
--- a/tools/perf/util/itrace.h
+++ b/tools/perf/util/itrace.h
@@ -56,6 +56,7 @@ enum itrace_period_type {
* because 'perf inject' will write it out
* @instructions: whether to synthesize 'instructions' events
* @branches: whether to synthesize 'branches' events
+ * @transactions: whether to synthesize events for transactions
* @errors: whether to synthesize decoder error events
* @dont_decode: whether to skip decoding entirely
* @log: write a decoding log
@@ -71,6 +72,7 @@ struct itrace_synth_opts {
bool inject;
bool instructions;
bool branches;
+ bool transactions;
bool errors;
bool dont_decode;
bool log;
--
1.9.1

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