Articulo de referencia

ftrace

{{cite web\n | url = https://www.kernel.org/pub/linux/kernel/COPYING\n | title = Linux kernel source: kernel/COPYING file\n | date = March 13, 1994 | access-date = June 11, 2016...

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

  1. "Fuente del kernel de Linux: kernel/COPYING file" . kernel.org . 13 de marzo de 1994. Consultado el 11 de junio de 2016 .
  2. 1 2 3 4 Jake Edge (13 de marzo de 2009). "Una mirada a ftrace" . LWN.net . Recuperado el 23 de julio de 2014 .
  3. 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 .
  4. "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 .
  5. 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 .
  6. "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 .
  7. Steven Rostedt (20 de octubre de 2010). "trace-cmd: Una interfaz para Ftrace" . LWN.net . Consultado el 19 de enero de 2015 .
  8. 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 .
  9. 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 . 
  10. 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 . 
  11. "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 .
  • 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