ftrace ( Function Tracer ) es un marco de rastreo 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 el kernel está en ejecución, las capacidades de rastreo de ftrace cubren una gama mucho más amplia de operaciones internas del kernel. [ 2 ] [ 3 ]
Detalles
Con sus diversos complementos de rastreo, ftrace puede dirigirse a diferentes puntos de rastreo estáticos , como eventos de planificación , 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 . También está disponible el seguimiento dinámico de llamadas a funciones del kernel, que opcionalmente se puede restringir a un subconjunto de funciones mediante el uso de comodines , y con la posibilidad de generar gráficos de llamadas y proporcionar informes de uso de la pila . Al mismo tiempo, ftrace se puede utilizar para medir diversas latencias dentro del kernel de Linux, como el tiempo durante el cual las interrupciones o la preempción están deshabilitadas. [ 2 ] [ 4 ] [ 5 ] : 3–11, 14, 18
Un kernel de Linux con ftrace habilitado se crea activando 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 escribibles 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 dichas utilidades son trace-cmd y KernelShark . [ 2 ] [ 5 ] : 31–47 [ 7 ] [ 8 ]
Internamente, ftrace se basa en el mecanismo de perfilado de gcc para anteponer instrucciones de máquina a las versiones compiladas de todas las funciones del kernel a nivel de código fuente , que redirigen la ejecución de las funciones a los trampolines y complementos de rastreo de ftrace que realizan el rastreo real. Estas instrucciones de " punto de entrada " creadas por gcc son alteradas por ftrace cuando se inicia el kernel y posteriormente, en tiempo de ejecución, por ftrace entre NOPs y saltos reales a los trampolines de rastreo, dependiendo de los tipos y opciones de rastreo configurados en tiempo de ejecución. [ 9 ] [ 10 ]
ftrace fue desarrollado principalmente por Steven Rostedt y se fusionó con la rama principal del kernel de Linux en la versión 2.6.27, que se publicó el 9 de octubre de 2008. [ 11 ]
Véase también
- DTrace : un marco de rastreo para solucionar problemas del kernel y de las aplicaciones, desarrollado originalmente para Solaris.
- ktrace : una utilidad para sistemas BSD Unix y Mac OS X que rastrea las interacciones entre el núcleo y los programas.
- ltrace , una utilidad de depuración de Linux, muestra las llamadas que una aplicación de espacio de usuario realiza a las bibliotecas compartidas.
- strace , una utilidad de depuración para Linux y algunos otros sistemas tipo Unix, monitoriza las llamadas al sistema utilizadas por un programa y todas las señales recibidas.
- SystemTap : un lenguaje de scripting y una utilidad utilizada 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 .
- 1 2 3 4 Jake Edge (13 de marzo de 2009). "Una mirada a ftrace" . LWN.net . Recuperado el 23 de julio de 2014 .
- 1 2 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 el seguimiento de latencias" . Red Hat . 23 de mayo de 2014. Consultado el 24 de julio de 2014 .
- 1 2 Steven Rostedt (18 de octubre de 2010). "Ftrace: Rastreo del núcleo de Linux" (PDF) . linuxfoundation.org . Archivado del original (PDF) el 8 de marzo de 2013. Recuperado 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). "Uso de 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 solo rastreo" (PDF) . linuxplumbersconf.org . págs. 6–12 , 24, 34, 56–58 . Recuperado el 11 de junio de 2016 .
- ↑ Tim Bird (1 de noviembre de 2012). "Medición de la duración de funciones con Ftrace" (PDF) . elinux.org . págs. 5–6 , 12–14 . Consultado el 11 de junio de 2016 .
- ↑ "Núcleo de Linux 2.6.27, Sección 1.7. Soporte para ftrace y sysprof" . kernelnewbies.org . 9 de octubre de 2008. Consultado el 23 de julio de 2014 .
Enlaces externos
- Depuración del kernel con 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: El interruptor de luz oculto , LWN.net, 13 de agosto de 2014, por Brendan Gregg
- El origen del error de corrupción e1000e , LWN.net, 21 de octubre de 2008, por Jonathan Corbet
- Depuración
- Software libre programado en C
- Características del kernel de Linux
- Herramientas de programación Unix
- Software que utiliza la Licencia Pública General de GNU.