Introdução às ferramentas de rastreamento
- Apresentação de diversos métodos de rastreamento com base em paixão e experiência com tracing
- Inclui 2 ferramentas de rastreamento novas e interessantes
- Essência do tracing: coletar dados com timestamp gerados no sistema e visualizá-los em uma UI de linha do tempo
Visualizando dados facilmente em uma UI de linha do tempo
- Visualização de dados de eventos em um formato JSON simples usando o Chromium Event JSON Format
- Verificação de arquivos de trace com o visualizador Perfetto ou Catapult, do Google
- Uso de um utilitário em Python para converter arquivos de trace em links clicáveis e compartilhá-los
Formatos avançados: Fuchsia Trace Format e Perfetto Protobuf
- Fuchsia Trace Format (FTF): formato binário simples e compacto para arquivos de trace grandes
- Perfetto Protobuf: formato compacto que oferece mais recursos e pode ser gerado por meio da biblioteca Protobuf
Diversas ferramentas de rastreamento
- Apresentação de várias ferramentas de visualização de trace, como Speedscope, pprof e Rerun
- Menção a visualizadores de profiling como Trace Compass e Firefox Profiler
Métodos de rastreamento
- Apresentação de métodos de rastreamento de baixo nível, como breakpoints de hardware, perf e scripting com GDB
- Rastreamento da execução de programas com Intel Processor Trace
- magic-trace: ferramenta que gera arquivos de trace para visualizar chamadas de função
Profilers de rastreamento baseados em instrumentação
- Comparação entre profilers de rastreamento baseados em instrumentação como Tracy, Optick e Perfetto
- Ênfase na importância de dados de eventos que incluam informações adicionais
eBPF
- Apresentação do subsistema eBPF para rastreamento usando o kernel Linux
- Apresentação de ferramentas de rastreamento com eBPF como BCC, bpftrace e ply
Exemplo de eBPF: rastreamento de pacotes e eventos de usuário baseado em Perfetto na Anthropic
- Combinação de BCC com visualização no Perfetto para analisar latência de cauda em código de rede
- Rastreamento de eventos em espaço de usuário com eBPF e otimização do processamento de eventos por meio de um helper em C
Instrumentação binária
- Apresentação de métodos de instrumentação binária usados quando não há acesso ao código-fonte
- Explicação de ferramentas como bpftime, E9Patch e Frida
Rastreamento distribuído
- Menção a soluções como OpenTelemetry, Zipkin e Odigos para rastreamento entre serviços
Profilers por amostragem
- Apresentação de profilers que amostram periodicamente toda a pilha de chamadas do programa
- Uso de UIs com eixo temporal, como Speedscope e Samply
Instrumentação com QEMU
- Uso da emulação completa e de hooks do QEMU quando todas as outras ferramentas de rastreamento falham
- Apresentação de ferramentas como Cannoli, QEMU TCG Plugins e usercorn
Opinião do GN⁺
O ponto mais importante deste texto é que ele oferece um catálogo amplo de métodos de rastreamento que podem ser usados para resolver diferentes tipos de problemas. Ele apresenta várias ferramentas e técnicas de tracing em um nível fácil de entender até mesmo para engenheiros de software iniciantes, o que torna o conteúdo muito útil e interessante para quem se interessa pelo tema. Em especial, o exemplo que combina tracing com eBPF e visualização no Perfetto por meio de um caso real mostra a aplicabilidade prática no trabalho e pode trazer novos insights aos leitores.
1 comentários
Comentário no Hacker News
Opinião do desenvolvedor do Spall:
Recomendação de ETW para quem trabalha com aplicações Windows:
Visão geral sobre soluções open source:
Forma de contratação na Anthropic:
Técnica de correlação entre programas Python e pacotes:
Experiência da equipe de desenvolvimento de plugin de IDE:
Necessidade do setor por profiling do custo de execução de JavaScript:
Menção ao dtrace e rant do bcantrill:
Agradecimento pelas ferramentas úteis: