Introducción a las herramientas de tracing
- Presentación de diversos métodos de tracing basada en la pasión y experiencia del autor con el tracing
- Incluye 2 herramientas de tracing nuevas e interesantes
- La esencia del tracing: recopilar datos con marcas de tiempo generados en el sistema y visualizarlos en una UI de línea de tiempo
Visualizar datos fácilmente en una UI de línea de tiempo
- Visualización de datos de eventos en un formato JSON simple usando Chromium Event JSON Format
- Revisión de archivos de tracing mediante el visor de Perfetto o Catapult de Google
- Uso de una utilidad en Python para convertir archivos de trace en enlaces clicables y compartirlos
Formatos avanzados: Fuchsia Trace Format y Perfetto Protobuf
- Fuchsia Trace Format (FTF): un formato binario simple y compacto para archivos de trace grandes
- Perfetto Protobuf: formato compacto compatible con más funciones, que puede generarse mediante la biblioteca Protobuf
Diversas herramientas de tracing
- Presentación de varias herramientas de visualización de traces como Speedscope, pprof y Rerun
- Mención de visores de profiling como Trace Compass y Firefox Profiler
Métodos de tracing
- Introducción a métodos de tracing de bajo nivel como hardware breakpoints, perf y scripting con GDB
- Seguimiento de la ejecución de programas usando Intel Processor Trace
- magic-trace: herramienta para generar archivos de trace que visualizan llamadas a funciones
Profilers de tracing basados en instrumentación
- Comparación de profilers de tracing basados en instrumentación como Tracy, Optick y Perfetto
- Énfasis en la importancia de los datos de eventos que incluyen información adicional
eBPF
- Introducción al subsistema eBPF para tracing usando el kernel de Linux
- Presentación de herramientas de tracing con eBPF como BCC, bpftrace y ply
Ejemplo de eBPF: tracing de paquetes y eventos de usuario basado en Perfetto en Anthropic
- Combinación de BCC y visualización con Perfetto para analizar la latencia de cola en código de networking
- Tracing de eventos en espacio de usuario con eBPF y optimización del procesamiento de eventos mediante un helper en C
Instrumentación binaria
- Introducción a métodos de instrumentación binaria usados cuando no es posible acceder al código fuente
- Explicación de herramientas como bpftime, E9Patch y Frida
Tracing distribuido
- Mención de soluciones como OpenTelemetry, Zipkin y Odigos para tracing entre servicios
Profilers de muestreo
- Introducción a profilers que muestrean periódicamente el stack completo de llamadas del programa
- Uso de UIs con eje temporal como Speedscope y Samply
Instrumentación de QEMU
- Emulación completa y hooking de QEMU usados cuando todas las demás herramientas de tracing fallan
- Presentación de herramientas como Cannoli, QEMU TCG Plugins y usercorn
Opinión de GN⁺
Lo más importante de este artículo es que ofrece un amplio catálogo de métodos de tracing que pueden usarse para resolver distintos tipos de problemas. Presenta diversas herramientas y métodos de tracing a un nivel fácil de entender incluso para ingenieros de software principiantes, por lo que resulta muy útil e interesante para quienes tienen interés en el tracing. En particular, el ejemplo que combina tracing con eBPF y visualización con Perfetto a través de un caso real muestra su aplicabilidad práctica y puede aportar nuevos insights a los lectores.
1 comentarios
Opiniones de Hacker News
Opinión del desarrollador de Spall:
Recomendación de ETW para quienes trabajan con aplicaciones de Windows:
Panorama de soluciones de código abierto:
Forma de contratación en Anthropic:
Programas en Python y técnicas de correlación de paquetes:
Experiencia del equipo que desarrolla un plugin de IDE:
Necesidad de la industria sobre perfilado del costo de ejecución de JavaScript:
Mención de dtrace y rant de bcantrill:
Agradecimiento por herramientas útiles: