perf auxtrace: Add itrace A option to approximate IPC
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 27 Oct 2021 08:03:30 +0000 (11:03 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 27 Oct 2021 19:20:08 +0000 (16:20 -0300)
Add an option to specify that synthesized IPC can be approximate, rather
than completely accurate.

Reviewed-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: https://lore.kernel.org/r/20211027080334.365596-3-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/itrace.txt
tools/perf/util/auxtrace.c
tools/perf/util/auxtrace.h

index 2d586fe5e4c5010c00905273e4c2766fa331daac..141449e97bed4a5704d7c6ea269f8f9e8c83c18b 100644 (file)
@@ -20,6 +20,7 @@
                L       synthesize last branch entries on existing event records
                s       skip initial number of events
                q       quicker (less detailed) decoding
+               A       approximate IPC
                Z       prefer to ignore timestamps (so-called "timeless" decoding)
 
        The default is all events i.e. the same as --itrace=ibxwpe,
index 8d2865b9ade206438ac668c2f0f6ed72bf3332b3..c679394b898de715a044600865ffc346938b6f24 100644 (file)
@@ -1564,6 +1564,9 @@ int itrace_do_parse_synth_opts(struct itrace_synth_opts *synth_opts,
                case 'q':
                        synth_opts->quick += 1;
                        break;
+               case 'A':
+                       synth_opts->approx_ipc = true;
+                       break;
                case 'Z':
                        synth_opts->timeless_decoding = true;
                        break;
index 20dc78d86d54455a1ae0e9d189c3eaf661ee0412..889f976ea1a0b5fdf6494d67c70cbad3690a7a5c 100644 (file)
@@ -84,6 +84,7 @@ enum itrace_period_type {
  * @thread_stack: feed branches to the thread_stack
  * @last_branch: add branch context to 'instruction' events
  * @add_last_branch: add branch context to existing event records
+ * @approx_ipc: approximate IPC
  * @flc: whether to synthesize first level cache events
  * @llc: whether to synthesize last level cache events
  * @tlb: whether to synthesize TLB events
@@ -127,6 +128,7 @@ struct itrace_synth_opts {
        bool                    thread_stack;
        bool                    last_branch;
        bool                    add_last_branch;
+       bool                    approx_ipc;
        bool                    flc;
        bool                    llc;
        bool                    tlb;
@@ -649,6 +651,7 @@ bool auxtrace__evsel_is_auxtrace(struct perf_session *session,
 "                              L[len]:                 synthesize last branch entries on existing event records\n" \
 "                              sNUMBER:                skip initial number of events\n"                \
 "                              q:                      quicker (less detailed) decoding\n" \
+"                              A:                      approximate IPC\n" \
 "                              Z:                      prefer to ignore timestamps (so-called \"timeless\" decoding)\n" \
 "                              PERIOD[ns|us|ms|i|t]:   specify period to sample stream\n" \
 "                              concatenate multiple options. Default is ibxwpe or cewp\n"