Cómo comprobar si el ftrace del kernel está habilitado en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo determinar si la potente utilidad de seguimiento del kernel de Linux, ftrace, está habilitada y accesible en su sistema. Comenzaremos examinando el directorio /sys/kernel/debug/tracing, que sirve como la interfaz principal para interactuar con ftrace.

Después de la comprobación inicial, utilizaremos la herramienta trace-cmd para verificar aún más la funcionalidad de ftrace y listar las opciones de seguimiento disponibles. Finalmente, inspeccionaremos los parámetros de configuración relevantes dentro del sistema de archivos /proc/sys/kernel para obtener una comprensión más profunda de la configuración de ftrace.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") subgraph Lab Skills linux/echo -.-> lab-558792{{"Cómo comprobar si el ftrace del kernel está habilitado en Linux"}} linux/ls -.-> lab-558792{{"Cómo comprobar si el ftrace del kernel está habilitado en Linux"}} linux/cat -.-> lab-558792{{"Cómo comprobar si el ftrace del kernel está habilitado en Linux"}} linux/ps -.-> lab-558792{{"Cómo comprobar si el ftrace del kernel está habilitado en Linux"}} end

Verificar el estado de ftrace con ls /sys/kernel/debug/tracing

En este paso, comenzaremos a explorar ftrace, una potente utilidad de seguimiento integrada en el kernel de Linux. ftrace permite a los desarrolladores y administradores de sistemas entender el comportamiento en tiempo de ejecución del kernel.

La interfaz principal para interactuar con ftrace es a través del sistema de archivos de depuración, específicamente ubicado en /sys/kernel/debug/tracing.

Primero, verifiquemos si el sistema de archivos de depuración está montado y si el directorio tracing existe. Podemos usar el comando ls para listar el contenido de este directorio.

Escriba el siguiente comando en su terminal y presione Enter:

ls /sys/kernel/debug/tracing

Debería ver una lista de archivos y directorios relacionados con ftrace. La salida exacta puede variar dependiendo de la versión y configuración del kernel, pero debería verse algo así:

README                       events                       options
available_events             free_buffer                  per_cpu
available_filter_functions   function_graph_max_depth     printk_formats
available_tracers            function_graph_tracer        set_event
buffer_size_kb               function_profile_dynamic     set_filter
buffer_total_size_kb         function_trace               set_ftrace_filter
current_tracer               instances                    set_ftrace_notrace
dynamic_filter               kprobe_events                set_graph_function
enabled                      kprobe_profile               set_graph_notrace
error_log                    max_graph_depth              set_tracer
event_sources                options                      snapshot
tracing_cpumask              tracing_max_latency          tracing_on
tracing_thresh               trace                        trace_clock
trace_marker                 trace_options                trace_pipe
trace_stat

Si ve una salida similar, significa que la interfaz de ftrace está disponible en su sistema. Si recibe un error como "No such file or directory" (No existe tal archivo o directorio), podría indicar que el sistema de archivos de depuración no está montado o que ftrace no está habilitado en el kernel. Sin embargo, en el entorno de LabEx, debería estar disponible.

Este directorio contiene varios archivos que controlan el comportamiento de ftrace y proporcionan datos de seguimiento. Exploraremos algunos de estos archivos en pasos posteriores.

Por ahora, simplemente verificar la existencia de este directorio y su contenido confirma que puede interactuar con ftrace.

Haga clic en Continuar para pasar al siguiente paso.

Verificar ftrace con trace-cmd list

En el paso anterior, confirmamos la presencia de la interfaz de ftrace en el sistema de archivos de depuración. Ahora, usemos una herramienta de línea de comandos llamada trace-cmd para interactuar con ftrace. trace-cmd es una utilidad de espacio de usuario que simplifica el proceso de configuración y recopilación de datos de ftrace.

Una de las funciones útiles de trace-cmd es listar los eventos de seguimiento y los tracers (rastreadores) disponibles. Esto nos ayuda a entender qué podemos monitorear con ftrace.

Usemos trace-cmd list para ver los tracers disponibles. Los tracers son diferentes modos de operación para ftrace, que te permiten rastrear diferentes aspectos del kernel.

Escribe el siguiente comando en tu terminal y presiona Enter:

trace-cmd list -t

La opción -t le dice a trace-cmd que liste los tracers disponibles. Deberías ver una salida similar a esta:

List of available tracers:
 blk
 function
 function_graph
 irqsoff
 nop
 preemptirqsoff
 wakeup
 wakeup_rt

Esta salida muestra los diferentes tracers disponibles en este sistema. Por ejemplo, function rastrea las llamadas a funciones, y function_graph rastrea las llamadas a funciones y su gráfico de llamadas.

A continuación, listemos los eventos disponibles que se pueden rastrear. Los eventos son puntos específicos en el kernel donde se pueden recopilar información de seguimiento.

Escribe el siguiente comando y presiona Enter:

trace-cmd list -e

La opción -e le dice a trace-cmd que liste los eventos disponibles. Este comando producirá una larga lista de eventos, categorizados por subsistemas (por ejemplo, sched, syscalls, ext4). La salida se verá algo así (solo se muestra una pequeña parte):

List of available events:
  ftrace:
    ftrace_buffer_overrun
    ftrace_inject_event
    ftrace_print_event
  kmem:
    kmem_cache_alloc
    kmem_cache_alloc_node
    kmem_cache_free
    kmem_cache_free_page
    kmem_cache_free_pages
    kmem_cache_grow
    kmem_cache_shrink
    mm_page_alloc
    mm_page_alloc_zone_locked
    mm_page_free
    mm_page_free_batched
    mm_page_pcpu_drain
  ... (many more events)

Puedes desplazarte por la salida para ver la gran cantidad de eventos disponibles para el seguimiento. Esto demuestra la visibilidad detallada que ftrace proporciona sobre las operaciones del kernel.

Usar trace-cmd list es una buena manera de obtener una visión general de lo que ftrace puede monitorear en tu sistema específico.

Haz clic en Continuar para continuar.

Inspeccionar la configuración de ftrace en /proc/sys/kernel

Además de la interfaz del sistema de archivos de depuración en /sys/kernel/debug/tracing, algunas configuraciones relacionadas con ftrace también se pueden encontrar en el directorio /proc/sys/kernel. El sistema de archivos /proc es un sistema de archivos virtual que proporciona información sobre procesos y otra información del sistema. El directorio /proc/sys contiene archivos que te permiten ver y modificar parámetros del kernel en tiempo de ejecución.

Inspeccionemos algunos archivos en /proc/sys/kernel que están relacionados con ftrace. Podemos usar el comando cat para ver el contenido de estos archivos.

Primero, veamos el archivo ftrace_enabled. Este archivo indica si ftrace está actualmente habilitado en el kernel.

Escribe el siguiente comando en tu terminal y presiona Enter:

cat /proc/sys/kernel/ftrace_enabled

Deberías ver una salida como esta:

1

Un valor de 1 significa que ftrace está habilitado, y 0 significa que está deshabilitado.

A continuación, veamos el archivo ftrace_dump_on_oops. Este archivo controla si el buffer de ftrace se imprime en la consola cuando ocurre un "kernel oops" (un error del kernel).

Escribe el siguiente comando y presiona Enter:

cat /proc/sys/kernel/ftrace_dump_on_oops

La salida probablemente será:

1

Un valor de 1 significa que el buffer de ftrace se imprimirá en caso de un "kernel oops", lo cual puede ser útil para la depuración.

Finalmente, veamos el archivo ftrace_filter_notrace_regex. Este archivo contiene una expresión regular que se puede utilizar para filtrar qué funciones no se rastrean cuando se utiliza el seguimiento de funciones.

Escribe el siguiente comando y presiona Enter:

cat /proc/sys/kernel/ftrace_filter_notrace_regex

La salida puede estar vacía o contener una expresión regular, dependiendo de la configuración del sistema:

Estos archivos en /proc/sys/kernel brindan una idea de algunas configuraciones globales de ftrace. Si bien la mayoría de la configuración detallada y el acceso a los datos se realizan a través de /sys/kernel/debug/tracing, estos archivos ofrecen una forma rápida de verificar el estado general y algunos comportamientos básicos de ftrace.

Ahora has explorado las principales interfaces para interactuar con ftrace: el sistema de archivos de depuración y el directorio /proc/sys/kernel.

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendimos cómo verificar si la utilidad ftrace del kernel está habilitada y es accesible en un sistema Linux. Comenzamos explorando la interfaz principal de ftrace ubicada en el sistema de archivos de depuración en /sys/kernel/debug/tracing. Al listar el contenido de este directorio utilizando el comando ls, verificamos la presencia de archivos y directorios relacionados con ftrace, lo que indica que la interfaz de ftrace está disponible.

Este primer paso confirmó el requisito fundamental para utilizar ftrace: el sistema de archivos de depuración debe estar montado y el directorio de seguimiento debe existir. Ver los diversos archivos de configuración y control de ftrace en la salida de ls /sys/kernel/debug/tracing proporcionó una confirmación visual de que la infraestructura de ftrace está presente y lista para una interacción adicional.