perf intel-pt: Add more information to debug log
Adrian Hunter
reviewercover perf intel-pt: Add more information to debug log
Hi
Here is a couple of small patches to add more information to the Intel PT debug log.
Adrian Hunter (2):
perf intel-pt: Add more event information to debug log perf intel-pt: Add MTC and CYC timestamps to debug log
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 4 ++++ tools/perf/util/intel-pt-decoder/intel-pt-log.c | 5 +++++ tools/perf/util/intel-pt-decoder/intel-pt-log.h | 1 + tools/perf/util/intel-pt.c | 16 +++++++++++++--- 4 files changed, 23 insertions(+), 3 deletions(-)
Regards
Adrian
Adrian Hunter
reviewerPATCH 1/2 perf intel-pt: Add more event information to debug log
More event information is useful for debugging, especially MMAP events.
--- tools/perf/util/intel-pt-decoder/intel-pt-log.c | 5 +++++ tools/perf/util/intel-pt-decoder/intel-pt-log.h | 1 + tools/perf/util/intel-pt.c | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-log.c +5 -0
@@ -31,6 +31,11 @@ static FILE *f;static char log_name[MAX_LOG_NAME ];bool intel_pt_enable_logging; +void *intel_pt_log_fp (void ) +{ +return f; +} +void intel_pt_log_enable (void ) { intel_pt_enable_logging = true;
tools/perf/util/intel-pt-decoder/intel-pt-log.h +1 -0
@@ -22,6 +22,7 @@struct intel_pt_pkt ; +void *intel_pt_log_fp (void );void intel_pt_log_enable (void );void intel_pt_log_disable (void );void intel_pt_log_set_name (const char *name);
tools/perf/util/intel-pt.c +13 -3
@@ -206,6 +206,16 @@ static void intel_pt_dump_event(struct intel_pt *pt, unsigned char *buf,intel_pt_dump (pt, buf, len); } +static void intel_pt_log_event (union perf_event *event) +{ +FILE *f =intel_pt_log_fp (); + +if (!intel_pt_enable_logging || !f) +return ; + +perf_event__fprintf (event, f); +} +static int intel_pt_do_fix_overlap (struct intel_pt *pt,struct auxtrace_buffer *a,struct auxtrace_buffer *b) {
@@ -2004,9 +2014,9 @@ static int intel_pt_process_event(struct perf_session *session, event->header.type == PERF_RECORD_SWITCH_CPU_WIDE) err =intel_pt_context_switch (pt, event, sample); -intel_pt_log ("event %s (%u): cpu %d time %" PRIu64" tsc %#" PRIx64"\n" , -perf_event__name (event->header.type), event->header.type, - sample->cpu, sample->time, timestamp); +intel_pt_log ("event %u: cpu %d time %" PRIu64" tsc %#" PRIx64" " , + event->header.type, sample->cpu, sample->time, timestamp); +intel_pt_log_event (event);return err; }
Signature · 1 line
2.17.1
tip-bot for Adrian Hunter
merge bot[tip:perf/urgent] perf intel-pt: Add more event information to debug log
perf intel-pt: Add more event information to debug log
Commit-ID: 93f8be2799515e01647c5a9b0d17a90a00ebcf82 Gitweb: https://git.kernel.org/tip/93f8be2799515e01647c5a9b0d17a90a00ebcf82 Author: Adrian Hunter <[email protected]> AuthorDate: Mon, 5 Nov 2018 09:35:04 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 5 Nov 2018 14:53:37 -0300
perf intel-pt: Add more event information to debug log
More event information is useful for debugging, especially MMAP events.
--- tools/perf/util/intel-pt-decoder/intel-pt-log.c | 5 +++++ tools/perf/util/intel-pt-decoder/intel-pt-log.h | 1 + tools/perf/util/intel-pt.c | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-log.c +5 -0
@@ -31,6 +31,11 @@ static FILE *f;static char log_name[MAX_LOG_NAME ];bool intel_pt_enable_logging; +void *intel_pt_log_fp (void ) +{ +return f; +} +void intel_pt_log_enable (void ) { intel_pt_enable_logging = true;
tools/perf/util/intel-pt-decoder/intel-pt-log.h +1 -0
@@ -22,6 +22,7 @@struct intel_pt_pkt ; +void *intel_pt_log_fp (void );void intel_pt_log_enable (void );void intel_pt_log_disable (void );void intel_pt_log_set_name (const char *name);
tools/perf/util/intel-pt.c +13 -3
@@ -206,6 +206,16 @@ static void intel_pt_dump_event(struct intel_pt *pt, unsigned char *buf,intel_pt_dump (pt, buf, len); } +static void intel_pt_log_event (union perf_event *event) +{ +FILE *f =intel_pt_log_fp (); + +if (!intel_pt_enable_logging || !f) +return ; + +perf_event__fprintf (event, f); +} +static int intel_pt_do_fix_overlap (struct intel_pt *pt,struct auxtrace_buffer *a,struct auxtrace_buffer *b) {
@@ -2010,9 +2020,9 @@ static int intel_pt_process_event(struct perf_session *session, event->header.type == PERF_RECORD_SWITCH_CPU_WIDE) err =intel_pt_context_switch (pt, event, sample); -intel_pt_log ("event %s (%u): cpu %d time %" PRIu64" tsc %#" PRIx64"\n" , -perf_event__name (event->header.type), event->header.type, - sample->cpu, sample->time, timestamp); +intel_pt_log ("event %u: cpu %d time %" PRIu64" tsc %#" PRIx64" " , + event->header.type, sample->cpu, sample->time, timestamp); +intel_pt_log_event (event);return err; }
Adrian Hunter
reviewerPATCH 2/2 perf intel-pt: Add MTC and CYC timestamps to debug log
In reply to Adrian HunterOne cause of decoding errors is un-synchronized side-band data. Timestamps are needed to debug such cases. TSC packet timestamps are logged. Log also MTC and CYC timestamps.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +4 -0
@@ -1474,6 +1474,8 @@ static void intel_pt_calc_mtc_timestamp(struct intel_pt_decoder *decoder) decoder->have_calc_cyc_to_tsc = false;intel_pt_calc_cyc_to_tsc (decoder, true); } + +intel_pt_log_to ("Setting timestamp" , decoder->timestamp); }static void intel_pt_calc_cbr (struct intel_pt_decoder *decoder)
@@ -1514,6 +1516,8 @@ static void intel_pt_calc_cyc_timestamp(struct intel_pt_decoder *decoder) decoder->timestamp = timestamp; decoder->timestamp_insn_cnt =0 ; + +intel_pt_log_to ("Setting timestamp" , decoder->timestamp); }/* Walk PSB+ packets when already in sync. */
Signature · 1 line
2.17.1
tip-bot for Adrian Hunter
merge bot[tip:perf/urgent] perf intel-pt: Add MTC and CYC timestamps to debug log
perf intel-pt: Add MTC and CYC timestamps to debug log
Commit-ID: f6c23e3b55cb93f32a724f41af8d38888bc2ab6b Gitweb: https://git.kernel.org/tip/f6c23e3b55cb93f32a724f41af8d38888bc2ab6b Author: Adrian Hunter <[email protected]> AuthorDate: Mon, 5 Nov 2018 09:35:05 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 5 Nov 2018 14:53:54 -0300
perf intel-pt: Add MTC and CYC timestamps to debug log
One cause of decoding errors is un-synchronized side-band data. Timestamps are needed to debug such cases. TSC packet timestamps are logged. Log also MTC and CYC timestamps.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +4 -0
@@ -1474,6 +1474,8 @@ static void intel_pt_calc_mtc_timestamp(struct intel_pt_decoder *decoder) decoder->have_calc_cyc_to_tsc = false;intel_pt_calc_cyc_to_tsc (decoder, true); } + +intel_pt_log_to ("Setting timestamp" , decoder->timestamp); }static void intel_pt_calc_cbr (struct intel_pt_decoder *decoder)
@@ -1514,6 +1516,8 @@ static void intel_pt_calc_cyc_timestamp(struct intel_pt_decoder *decoder) decoder->timestamp = timestamp; decoder->timestamp_insn_cnt =0 ; + +intel_pt_log_to ("Setting timestamp" , decoder->timestamp); }/* Walk PSB+ packets when already in sync. */
Em Mon, Nov 05, 2018 at 09:35:03AM +0200, Adrian Hunter escreveu:
Quoted 9 lines
Hi
Here is a couple of small patches to add more information to the Intel PT debug log.
Adrian Hunter (2):
perf intel-pt: Add more event information to debug log perf intel-pt: Add MTC and CYC timestamps to debug log
Thanks, applied both patches.
- Arnaldo