• Adrian Hunter's avatar
    perf scripts python: intel-pt-events.py: Add ability interleave output · ad7ad6b5
    Adrian Hunter authored
    Intel PT timestamps are not provided for every branch, let alone every
    instruction, so there can be many samples with the same timestamp. With
    per-cpu contexts, decoding is done for each CPU in turn, which can make it
    difficult to see what is happening on different CPUs at the same time.
    Currently the interleaving from perf script --itrace=i0ns is quite coarse
    grained. There are often long stretches executing on one CPU and nothing on
    another.
    
    Some people are interested in seeing what happened on multiple CPUs before
    a crash to debug races etc.
    
    To improve perf script interleaving for parallel execution, the
    intel-pt-events.py script has been enhanced to enable interleaving the
    output with the same timestamp from different CPUs. It is understood that
    interleaving is not perfect or causal.
    
    Add parameter --interleave [<n>] to interleave sample output for the same
    timestamp so that no more than n samples for a CPU are displayed in a row.
    'n' defaults to 4. Note this only affects the order of output, and only
    when the timestamp is the same.
    
    Example:
    
      $ perf script intel-pt-events.py --insn-trace --interleave 3
      ...
      bash  2267/2267  [004]  9323.692625625  563caa3c86f0  jz 0x563caa3c89c7        run_pending_traps+0x30 (/usr/bin/bash)   IPC: 1.52 (38/25)
      bash  2267/2267  [004]  9323.692625625  563caa3c89c7  movq  0x118(%rsp), %rax  run_pending_traps+0x307 (/usr/bin/bash)
      bash  2267/2267  [004]  9323.692625625  563caa3c89cf  subq  %fs:0x28, %rax     run_pending_traps+0x30f (/usr/bin/bash)
      bash  2270/2270  [007]  9323.692625625  55dc58cabf02  jz 0x55dc58cabf48        unquoted_glob_pattern_p+0x102 (/usr/bin/bash)   IPC: 1.56 (25/16)
      bash  2270/2270  [007]  9323.692625625  55dc58cabf04  cmp $0x5d, %al           unquoted_glob_pattern_p+0x104 (/usr/bin/bash)
      bash  2270/2270  [007]  9323.692625625  55dc58cabf06  jnz 0x55dc58cabf10       unquoted_glob_pattern_p+0x106 (/usr/bin/bash)
      bash  2264/2264  [001]  9323.692625625  7fd556a4376c  jbe 0x7fd556a43ac8       round_and_return+0x3fc (/usr/lib/x86_64-linux-gnu/libc.so.6)   IPC: 4.30 (43/10)
      bash  2264/2264  [001]  9323.692625625  7fd556a43772  and $0x8, %edx           round_and_return+0x402 (/usr/lib/x86_64-linux-gnu/libc.so.6)
      bash  2264/2264  [001]  9323.692625625  7fd556a43775  jnz 0x7fd556a43ac8       round_and_return+0x405 (/usr/lib/x86_64-linux-gnu/libc.so.6)
      bash  2267/2267  [004]  9323.692625625  563caa3c89d8  jnz 0x563caa3c8b11       run_pending_traps+0x318 (/usr/bin/bash)
      bash  2267/2267  [004]  9323.692625625  563caa3c89de  add $0x128, %rsp         run_pending_traps+0x31e (/usr/bin/bash)
      bash  2267/2267  [004]  9323.692625625  563caa3c89e5  popq  %rbx               run_pending_traps+0x325 (/usr/bin/bash)
      ...
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20221020152509.5298-1-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ad7ad6b5
perf-intel-pt.txt 85.9 KB