ftrace
ftrace (abreviado de Function Tracer) es un marco de seguimiento para el núcleo Linux. Aunque su nombre original, Function Tracer, proviene de la capacidad de ftrace para registrar información relacionada con varias llamadas a funciones realizadas mientras el kernel se está ejecutando, las capacidades de rastreo de ftrace actuales cubren un rango mucho más amplio de operaciones internas del kernel.[1][2]
Ftrace | ||
---|---|---|
Parte de núcleo Linux | ||
Información general | ||
Tipo de programa | software libre | |
Licencia | GNU General Public License | |
Información técnica | ||
Programado en | C | |
Con sus diversos complementos trazadores, ftrace puede dirigirse a diferentes puntos de rastreo estáticos, como la programación de eventos, interrupciones, E/S mapeadas en memoria, transiciones de estado de energía de la CPU y operaciones relacionadas con sistemas de archivos y virtualización. Además, el seguimiento dinámico de las llamadas de la función del kernel está disponible, opcionalmente restringible a un subconjunto de funciones mediante el uso de globs, y con la posibilidad de generar gráficos de llamadas y proporcionar informes de uso de la pila. Al mismo tiempo, ftrace se puede usar para medir varias latencias dentro del núcleo Linux, por ejemplo, durante cuánto tiempo se inhabilitan las interrupciones o las características permisivas.[1][3][4]
La característica se habilita con la opción de configuración CONFIG_FUNCTION_TRACER. La interacción completa en tiempo de ejecución con ftrace se realiza a través de archivos virtuales legibles y de escritura contenidos en un sistema de archivos debugfs específicamente montado; como resultado, ftrace no requiere utilidades de espacio de usuario especializadas para operar.[5][6][7] Sin embargo, hay utilidades de espacio de usuario adicionales que proporcionan funciones más avanzadas para el registro, análisis y visualización de datos; Ejemplos de tales utilidades son trace-cmd y KernelShark.[8][9][10][11]
Internamente, ftrace se basa en el mecanismo de creación de perfiles de gcc para agregar instrucciones de máquina a las versiones compiladas de todas las funciones del kernel de nivel de origen, que redirigen la ejecución de funciones a los trampolines y rastreadores de rastreo de ftrace que realizan el rastreo real. Estas instrucciones de "punto de entrada" creadas por gcc se modifican con el comando ftrace cuando se arranca el kernel, y se modifican posteriormente en el tiempo de ejecución por el camino entre los NOP y los saltos reales a los trampolines de rastreo, según los tipos de rastreo y las opciones configuradas en el tiempo de ejecución.[12][13]
ftrace fue desarrollado principalmente por Steven Rostedt, y se fusionó con la línea principal del núcleo Linux en la versión 2.6.27, que se lanzó el 9 de octubre de 2008.[14]
Véase también
editar- DTrace – un marco de seguimiento para solucionar problemas de kernel y aplicaciones, desarrollado originalmente para Solaris
- ktrace – una utilidad BSD Unix y Mac OS X que rastrea el núcleo – interacciones del programa
- trace – una utilidad de depuración de Linux, muestra las llamadas que hace una aplicación de usuario a bibliotecas compartidas
- strace – una utilidad de depuración para Linux y algunos otros sistemas similares a Unix, monitorea las llamadas al sistema utilizadas por un programa y todas las señales recibidas
- SystemTap – Un script y una utilidad utilizada para instrumentar sistemas Linux.
Referencias
editar- ↑ a b Jake Edge (2009-03-13 de mdy). «A look at ftrace». LWN.net. Consultado el 2014-07-23 de mdy.
- ↑ Steven Rostedt (2014-06-16 de mdy). «Linux kernel documentation: Documentation/trace/ftrace.txt». kernel.org. Consultado el 2014-07-23 de mdy.
- ↑ «Red Hat Enterprise MRG 2 documentation, Section 3.8. Using the ftrace utility for tracing latencies». Red Hat. 2014-05-23 de mdy. Consultado el 2014-07-24 de mdy.
- ↑ Steven Rostedt (2010-10-18 de mdy). «Ftrace: Linux Kernel Tracing» (PDF). linuxfoundation.org. Archivado desde el original el 8 de marzo de 2013. Consultado el 2014-07-23 de mdy.
- ↑ Jake Edge (2009-03-13 de mdy). «A look at ftrace». LWN.net. Consultado el 2014-07-23 de mdy.
- ↑ Steven Rostedt (2014-06-16 de mdy). «Linux kernel documentation: Documentation/trace/ftrace.txt». kernel.org. Consultado el 2014-07-23 de mdy.
- ↑ «Red Hat Enterprise Linux 6 documentation, Section 6.5. ftrace». Red Hat. 2014-03-14 de mdy. Consultado el 2014-07-23 de mdy.
- ↑ Jake Edge (2009-03-13 de mdy). «A look at ftrace». LWN.net. Consultado el 2014-07-23 de mdy.
- ↑ Steven Rostedt (2010-10-18 de mdy). «Ftrace: Linux Kernel Tracing» (PDF). linuxfoundation.org. Archivado desde el original el 8 de marzo de 2013. Consultado el 2014-07-23 de mdy.
- ↑ Steven Rostedt (2010-10-20 de mdy). «trace-cmd: A front-end for Ftrace». LWN.net. Consultado el 2015-01-19 de mdy.
- ↑ Steven Rostedt (2011-02-02 de mdy). «Using KernelShark to analyze the real-time scheduler». LWN.net. Consultado el 2016-06-11 de mdy.
- ↑ Steven Rostedt (2015-01-05 de mdy). «Ftrace Kernel Hooks: More than just tracing» (PDF). linuxplumbersconf.org. pp. 6-12, 24, 34, 56-58. Consultado el 2016-06-11 de mdy.
- ↑ Tim Bird (2012-11-01 de mdy). «Measuring Function Duration with Ftrace» (PDF). elinux.org. pp. 5-6, 12-14. Consultado el 2016-06-11 de mdy.
- ↑ «Linux kernel 2.6.27, Section 1.7. ftrace, sysprof support». kernelnewbies.org. 2008-10-09 de mdy. Consultado el 2014-07-23 de mdy.
Enlaces externos
editar- Depurando el kernel usando Ftrace – parte 1 y parte 2, LWN.net, diciembre de 2009, por Steven Rostedt
- Secretos de la función Ftrace tracer, LWN.net, 20 de enero de 2010, por Steven Rostedt
- Ftrace: El interruptor de luz oculta, LWN.net, 13 de agosto de 2014, por Brendan Gregg
- La fuente del error de corrupción e1000e, LWN.net, 21 de octubre de 2008, por Jonathan Corbet