Repolode
janestreet

janestreet/magic-trace

Un profiler para Linux que usa Intel Processor Trace para registrar cada llamada a función de un proceso y mostrarla en una línea de tiempo interactiva.

Estrellas
6,347
Forks
223
Issues abiertos
73
Último commit
hace 18 días

¿Qué es?

magic-trace recopila y muestra trazas de alta resolución de lo que hace un proceso. En lugar de muestrear pilas de llamadas a intervalos, como hace perf, usa Intel Processor Trace para mantener un búfer circular con todo el flujo de control y luego toma una instantánea de ese búfer en el momento elegido. La instantánea se reconstruye como una línea de tiempo interactiva de pilas de llamadas que abarca, de forma predeterminada, aproximadamente los últimos 10 ms, y permite resolver las llamadas a funciones con una precisión de unos 40 ns.

Puedes conectarlo a un proceso en ejecución y separarlo con Ctrl+C para capturar el final de la ejecución, o configurar un disparador para que tome una instantánea cada vez que se llame a una función determinada. Las trazas se guardan como archivos trace.fxt.gz y se abren en el visor magic-trace.org, que se ejecuta en el navegador y es un fork de Perfetto. La herramienta no requiere cambios en la aplicación y, según se indica, añade entre un 2 % y un 10 % de sobrecarga.

Requiere una CPU Intel Skylake o posterior y solo funciona en Linux. La mayoría de las máquinas virtuales no son compatibles.

Funciones clave

  • 01Registra cada llamada a función de un proceso con una resolución de unos 40 ns.
  • 02Usa Intel Processor Trace para tomar una instantánea de un búfer circular con el flujo de control, en lugar de recurrir al muestreo.
  • 03Se conecta a un proceso en ejecución sin necesidad de modificar la aplicación.
  • 04Activa instantáneas al llamar a una función determinada o al separarse del proceso.
  • 05El visor se ejecuta en el navegador y no carga las trazas en ningún sitio.

Casos de uso

  • Averiguar por qué algunas solicitudes en producción son lentas mientras que muchas otras son rápidas.
  • Ver qué código se ejecuta realmente en una ruta crítica, en lugar de lo que se suponía que se ejecutaba.
  • Revisar la secuencia de llamadas que precede a un fallo.
  • Investigar qué ocurre entre dos momentos de un programa de larga duración, como un ciclo del planificador o una pasada del GC.

Inicio rápido

  1. 1

    Descarga el binario o el paquete de la versión desde la página de la última versión

  2. 2

    Da permisos de ejecución al binario precompilado

    chmod +x magic-trace
  3. 3

    Instala el paquete .deb descargado

    sudo dpkg -i magic-trace*.deb
  4. 4

    Comprueba la instalación mostrando el texto de ayuda

    magic-trace -help

Antes de usarlo

  • Solo es compatible con Linux y requiere una CPU Intel (Skylake o posterior).
  • La mayoría de las máquinas virtuales no son compatibles.

En colecciones

Temas

#performance-tools#profiling#tracing#intel-pt#linux#debugging#observability#intel#introspection#profile

Preguntas frecuentes

¿Qué es magic-trace?
Un profiler para Linux que usa Intel Processor Trace para registrar cada llamada a función de un proceso y mostrarla en una línea de tiempo interactiva. magic-trace recopila y muestra trazas de alta resolución de lo que hace un proceso. En lugar de muestrear pilas de llamadas a intervalos, como hace perf, usa Intel Processor Trace para mantener un búfer circular con todo el flujo de control y luego toma una instantánea de ese búfer en el momento elegido. La instantánea se reconstruye como una línea de tiempo interactiva de pilas de llamadas que abarca, de forma predeterminada, aproximadamente los últimos 10 ms, y permite resolver las llamadas a funciones con una precisión de unos 40 ns.
¿magic-trace es gratuito? ¿Qué licencia tiene?
magic-trace es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿magic-trace sigue mantenido?
Mantenimiento activo. El último commit de magic-trace fue el 19 oct 2026.
¿Para qué puedo usar magic-trace?
Averiguar por qué algunas solicitudes en producción son lentas mientras que muchas otras son rápidas. Ver qué código se ejecuta realmente en una ruta crítica, en lugar de lo que se suponía que se ejecutaba. Revisar la secuencia de llamadas que precede a un fallo. Investigar qué ocurre entre dos momentos de un programa de larga duración, como un ciclo del planificador o una pasada del GC.
¿Cómo se instala magic-trace?
Descarga el binario o el paquete de la versión desde la página de la última versión Da permisos de ejecución al binario precompilado: chmod +x magic-trace Instala el paquete .deb descargado: sudo dpkg -i magic-trace*.deb Comprueba la instalación mostrando el texto de ayuda: magic-trace -help
¿Dónde consigo magic-trace?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/janestreet/magic-trace

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados