seguimiento


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 seguimiento de ftrace cubren una gama mucho más amplia de operaciones internas del kernel. [2] [3]

Con sus diversos complementos de rastreo, ftrace puede apuntar a diferentes puntos de rastreo estáticos , como eventos de programación , interrupciones , E/S asignadas a la memoria , transiciones de estado de energía de la CPU y operaciones relacionadas con sistemas de archivos y virtualización . Además, está disponible el seguimiento dinámico de las llamadas a funciones del núcleo, 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 latenciasdentro del kernel de Linux, como por cuánto tiempo se deshabilitan 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 del tiempo de ejecución con ftrace se realiza a través de archivos virtuales legibles y escribibles contenidos en un sistema de archivos debugfs específicamente montado ; 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 brindan 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 generación de perfiles de gcc para anteponer instrucciones de máquina a las versiones compiladas de todas las funciones del kernel a nivel de fuente , que redirigen la ejecución de funciones a los trampolines de ftrace y complementos de seguimiento que realizan el seguimiento real. Estas instrucciones de " punto de entrada " creadas por gcc son alteradas por ftrace cuando se arranca el kernel , y ftrace varía más tarde en tiempo de ejecución entre NOP y saltos reales a los trampolines de rastreo, según los tipos de rastreo y las opciones configuradas en tiempo de ejecución. [9] [10]

ftrace fue 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 se lanzó el 9 de octubre de 2008. [11]