Ftrace
# 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.

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.

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. 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.

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.

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.

