ftrace ( Function Tracer ) es un marco de seguimiento para el kernel de 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 se ejecuta el kernel , las capacidades de rastreo de ftrace cubren una gama mucho más amplia de operaciones internas del kernel. [2] [3]
Desarrollador (es) | Steven Rostedt y otros |
---|---|
Versión inicial | 9 de octubre de 2008 |
Sistema operativo | Linux |
Tipo | Extensión del kernel |
Licencia | GNU GPL versión 2 [1] |
Sitio web | www |
Detalles
Con sus diversos complementos de rastreo, ftrace puede dirigirse a diferentes puntos de rastreo estáticos , como eventos de programación , interrupciones , E / S mapeadas en memoria , transiciones de estado de energía de CPU y operaciones relacionadas con sistemas de archivos y virtualización . Además, el seguimiento dinámico de las llamadas a funciones 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 kernel de Linux, como por cuánto tiempo están deshabilitadas las interrupciones o la preferencia . [2] [4] [5] : 3–11,14,18
Un kernel de Linux habilitado para ftrace se crea habilitando la opción de configuración del kernel CONFIG_FUNCTION_TRACER . Toda la interacción en tiempo de ejecución con ftrace se realiza a través de archivos virtuales legibles y grabables contenidos en un sistema de archivos debugfs montado específicamente ; como resultado, ftrace no requiere utilidades de espacio de usuario especializadas para funcionar. [2] [3] [6] Sin embargo, existen 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 . [2] [5] : 31–47 [7] [8]
Internamente, ftrace se basa en el gcc que está perfilado mecanismo para anteponer instrucciones de la máquina a los compilados versiones de todos de origen funciones del núcleo -level, que vuelven a dirigir la ejecución de las funciones de la ftrace camas elásticas y plugins trazadores que realizan el trazado real. Estos " punto de entrada instrucciones" creadas por gcc son alteradas por ftrace cuando está el núcleo arranca , y más tarde variaron en tiempo de ejecución por ftrace entre NOP y reales saltos a los trampolines de rastreo, dependiendo de los tipos de rastreo y las opciones configuradas en tiempo de ejecución. [9] [10]
ftrace es desarrollado principalmente por Steven Rostedt, y se fusionó con la línea principal del kernel de Linux en la versión 2.6.27 del kernel, que fue lanzada el 9 de octubre de 2008. [11]
Ver también
- 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 las interacciones entre el kernel y el programa
- ltrace : 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 lenguaje de secuencias de comandos y una utilidad que se utiliza para instrumentar sistemas Linux.
Referencias
- ^ "Fuente del kernel de Linux: kernel / COPYING file" . kernel.org . 13 de marzo de 1994 . Consultado el 11 de junio de 2016 .
- ^ a b c d Jake Edge (13 de marzo de 2009). "Una mirada a ftrace" . LWN.net . Consultado el 23 de julio de 2014 .
- ^ a b Steven Rostedt (16 de junio de 2014). "Documentación del kernel de Linux: Documentation / trace / ftrace.txt" . kernel.org . Consultado el 23 de julio de 2014 .
- ^ "Documentación de Red Hat Enterprise MRG 2, Sección 3.8. Uso de la utilidad ftrace para rastrear latencias" . Red Hat . 23 de mayo de 2014 . Consultado el 24 de julio de 2014 .
- ^ a b Steven Rostedt (18 de octubre de 2010). "Ftrace: seguimiento del kernel de Linux" (PDF) . linuxfoundation.org . Archivado desde el original (PDF) el 8 de marzo de 2013 . Consultado el 23 de julio de 2014 .
- ^ "Documentación de Red Hat Enterprise Linux 6, Sección 6.5. Ftrace" . Red Hat . 14 de marzo de 2014 . Consultado el 23 de julio de 2014 .
- ^ Steven Rostedt (20 de octubre de 2010). "trace-cmd: una interfaz para Ftrace" . LWN.net . Consultado el 19 de enero de 2015 .
- ^ Steven Rostedt (2 de febrero de 2011). "Utilizando KernelShark para analizar el planificador en tiempo real" . LWN.net . Consultado el 11 de junio de 2016 .
- ^ Steven Rostedt (5 de enero de 2015). "Ftrace Kernel Hooks: más que simplemente rastrear" (PDF) . linuxplumbersconf.org . págs. 6-12, 24, 34, 56-58 . Consultado el 11 de junio de 2016 .
- ^ Tim Bird (1 de noviembre de 2012). "Duración de la función de medición con Ftrace" (PDF) . elinux.org . págs. 5-6, 12-14 . Consultado el 11 de junio de 2016 .
- ^ "Linux kernel 2.6.27, sección 1.7. Ftrace, soporte sysprof" . kernelnewbies.org . 9 de octubre de 2008 . Consultado el 23 de julio de 2014 .
enlaces externos
- Depurando el kernel usando Ftrace - parte 1 y parte 2 , LWN.net , diciembre de 2009, por Steven Rostedt
- Secretos del rastreador de funciones Ftrace , LWN.net, 20 de enero de 2010, por Steven Rostedt
- Ftrace: The hidden light switch , 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