Gostaria de rastrear tracepoints de todo o sistema. Perf list me diz que os seguintes tracepoints estão disponíveis:
block:block_io_start [Tracepoint event]
block:block_plug [Tracepoint event]
block:block_rq_complete [Tracepoint event]
block:block_rq_error [Tracepoint event]
block:block_rq_insert [Tracepoint event]
...
power:cpu_frequency [Tracepoint event]
power:cpu_frequency_limits [Tracepoint event]
power:cpu_idle [Tracepoint event]
power:cpu_idle_miss [Tracepoint event]
Entendo que devo rastrear os pontos de rastreamento com
perf record -e TRACEPOINT -a
para um rastreamento em todo o sistema. No entanto, me disseram que o tracepoint é um unsupported tracepoint
:
perf record -e block:block_io_start -a
event syntax error: 'block:block_io_start'
\___ unsupported tracepoint
libtraceevent is necessary for tracepoint support
Run 'perf list' for a list of valid events
Eu instalei todos libtraceevent*
os pacotes. Meu kernel é:
6.8.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 11 15:25:05 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
Você provavelmente terá que reconstruir o perf com suporte a libtraceevent. Dependendo do seu sistema, o processo pode incluir a instalação do pacote linux-source e possivelmente build-essential, e claro, libtraceevent-dev. Então
cd /usr/src/linux-source-…/tools/perf && make
É difícil entender por que o perf é criado sem o libtraceevent, mas o bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2019247 tem algumas dicas, assim como https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2076190
Estou aguardando ansiosamente a reintrodução do libtraceevent no perf no Ubuntu Noble, em referência ao último bug.