Cómo verificar si los contadores de rendimiento del kernel están activos 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, aprenderá cómo verificar si los contadores de rendimiento del kernel están activos en Linux. Explorará cómo utilizar el comando perf stat para medir los contadores de rendimiento durante la ejecución de comandos, verificará la configuración de los contadores de rendimiento dentro del sistema de archivos /sys/kernel e inspeccionará los registros del kernel utilizando dmesg para encontrar mensajes relacionados con los contadores de rendimiento. Esta experiencia práctica le proporcionará las habilidades necesarias para diagnosticar y comprender el estado del monitoreo de rendimiento en su sistema Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/sleep("Execution Delaying") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/sleep -.-> lab-558797{{"Cómo verificar si los contadores de rendimiento del kernel están activos en Linux"}} linux/ls -.-> lab-558797{{"Cómo verificar si los contadores de rendimiento del kernel están activos en Linux"}} linux/cat -.-> lab-558797{{"Cómo verificar si los contadores de rendimiento del kernel están activos en Linux"}} linux/cd -.-> lab-558797{{"Cómo verificar si los contadores de rendimiento del kernel están activos en Linux"}} linux/grep -.-> lab-558797{{"Cómo verificar si los contadores de rendimiento del kernel están activos en Linux"}} end

Verificar contadores con perf stat

En este paso, aprenderá cómo utilizar el comando perf stat para medir los contadores de rendimiento. Los contadores de rendimiento son registros de hardware especiales que cuentan eventos específicos que ocurren dentro del CPU, como la cantidad de instrucciones ejecutadas, fallos de caché o predicciones de ramificación.

La herramienta perf es una poderosa utilidad de línea de comandos para el análisis de rendimiento en Linux. perf stat se utiliza para ejecutar un comando y recopilar estadísticas de los contadores de rendimiento durante la ejecución de ese comando.

Comencemos ejecutando un comando sencillo y observando sus contadores de rendimiento. Utilizaremos el comando ls, que lista el contenido de un directorio.

Abra la terminal si aún no lo ha hecho. Puede encontrar el icono de Xfce Terminal en el lado izquierdo de su escritorio.

Ahora, escriba el siguiente comando y presione Enter:

perf stat ls

Debería ver una salida similar a esta:

 Performance counter stats for 'ls':

          <placeholder>      task-clock (msec)         ##    <placeholder> CPUs utilized
          <placeholder>      context-switches          ##    <placeholder> /sec
          <placeholder>      cpu-migrations            ##    <placeholder> /sec
          <placeholder>      page-faults               ##    <placeholder> /sec
          <placeholder>      cycles                    ##    <placeholder> GHz
          <placeholder>      instructions              ##    <placeholder>  insns per cycle
          <placeholder>      branches                  ##    <placeholder> % of all instructions
          <placeholder>      branch-misses             ##    <placeholder> % of all branches

          <placeholder> msec task-clock                ##    <placeholder> CPUs utilized

Los números exactos y los eventos pueden variar dependiendo del sistema y de la ejecución específica, pero debería ver una lista de eventos de rendimiento y sus conteos durante la ejecución del comando ls.

Algunos eventos comunes que puede ver incluyen:

  • task-clock: El tiempo total que la tarea estuvo en ejecución en un CPU.
  • cycles: La cantidad de ciclos de CPU consumidos.
  • instructions: La cantidad de instrucciones ejecutadas.
  • branch-misses: La cantidad de veces que una predicción de ramificación fue incorrecta.

Comprender estos contadores puede ayudarlo a identificar cuellos de botella de rendimiento en su código o sistema.

También puede ejecutar perf stat en un comando más complejo o incluso en un script para analizar su rendimiento.

Por ejemplo, intentemos ejecutar perf stat en un simple comando sleep:

perf stat sleep 1

Esto medirá los contadores de rendimiento mientras el sistema se queda en modo de espera durante 1 segundo. La salida mostrará los contadores para el proceso sleep.

Experimente ejecutando perf stat en diferentes comandos para ver cómo cambian los contadores.

Haga clic en Continuar para pasar al siguiente paso.

Verificar la configuración de los contadores en /sys/kernel

En este paso, explorará cómo se exponen las configuraciones de los contadores de rendimiento en el sistema de archivos /sys del kernel de Linux. El sistema de archivos /sys proporciona una interfaz a las estructuras de datos del kernel, lo que le permite inspeccionar y, en ocasiones, modificar parámetros del kernel.

Las configuraciones de los contadores de rendimiento, como si los usuarios no privilegiados pueden acceder a los eventos de contadores de rendimiento en bruto, a menudo se controlan a través de archivos en /sys/kernel/perf_event.

Vayamos al directorio relevante e inspeccionemos un archivo de configuración.

Primero, use el comando cd para cambiar su directorio actual a /sys/kernel/perf_event. Recuerde que su directorio predeterminado es ~/project, por lo que debe usar la ruta absoluta.

Escriba el siguiente comando y presione Enter:

cd /sys/kernel/perf_event

Ahora está en el directorio /sys/kernel/perf_event. Puede usar el comando ls para ver los archivos dentro de este directorio:

ls

Debería ver una lista de archivos, que pueden incluir:

kptr_restrict  perf_event_paranoid  sysfs_deprecated

El archivo que nos interesa es perf_event_paranoid. Este archivo controla el nivel de acceso que tienen los usuarios no privilegiados a los eventos de rendimiento. Un valor más bajo significa menos restricciones (más acceso), y un valor más alto significa más restricciones (menos acceso).

Veamos el contenido de este archivo usando el comando cat:

cat perf_event_paranoid

La salida será un solo número, generalmente entre -1 y 2.

<number>

Esto es lo que generalmente significan los diferentes valores:

  • -1: Permite a todos los usuarios usar todas las funciones de perf.
  • 0: Permite a todos los usuarios usar perf para mediciones por proceso y por CPU.
  • 1: Permite solo a los usuarios privilegiados (como root) usar perf para mediciones por proceso y por CPU.
  • 2: Permite solo a los usuarios privilegiados usar perf para mediciones por proceso.

El valor predeterminado suele ser 2 por razones de seguridad, lo que evita que los usuarios no privilegiados utilicen potencialmente los contadores de rendimiento para obtener información sobre otros procesos.

Comprender este archivo le ayuda a ver cómo está configurado el sistema en cuanto al acceso al monitoreo de rendimiento.

Haga clic en Continuar para continuar.

Inspeccionar registros de contadores en dmesg

En este paso, aprenderá cómo utilizar el comando dmesg para ver los mensajes del kernel, que a veces pueden incluir información relacionada con los contadores de rendimiento o eventos de perf. dmesg es un comando que muestra los mensajes del buffer circular del kernel. Estos mensajes son generados por el kernel durante el arranque y el tiempo de ejecución y pueden contener información valiosa para la depuración y el análisis del sistema.

Si bien perf por sí mismo suele mostrar las estadísticas directamente en la terminal, la interacción del kernel con el hardware de monitoreo de rendimiento o cualquier problema relacionado puede registrarse en el buffer circular del kernel.

Para ver los mensajes del kernel, use el comando dmesg:

dmesg

Esto imprimirá una cantidad potencialmente grande de salida en su terminal, mostrando todos los mensajes del buffer circular del kernel.

Para encontrar mensajes específicamente relacionados con perf o los contadores de rendimiento, puede canalizar la salida de dmesg al comando grep. grep es una poderosa herramienta para buscar texto utilizando patrones.

Busquemos mensajes que contengan la palabra "perf":

dmesg | grep perf

Este comando hace lo siguiente:

  • dmesg: Muestra los mensajes del kernel.
  • |: Este es un pipe (canalización), que envía la salida del comando de la izquierda como entrada al comando de la derecha.
  • grep perf: Busca en la entrada las líneas que contengan la palabra "perf".

Puede ver una salida similar a esta (o nada, dependiendo de los eventos recientes del kernel):

[<placeholder>] perf: interrupt took too long (<placeholder> > <placeholder> ms), lowering kernel.perf_event_paranoid to <placeholder>

Este mensaje de ejemplo indica que una interrupción de rendimiento tardó demasiado tiempo y que el kernel ajustó automáticamente la configuración de perf_event_paranoid (que vimos en el paso anterior) a un valor menos restrictivo para mitigar potencialmente el problema.

También puede buscar otros términos relacionados, como "performance" o "counter":

dmesg | grep performance
dmesg | grep counter

Inspeccionar la salida de dmesg puede ser útil para diagnosticar problemas relacionados con el monitoreo de rendimiento o entender cómo el kernel interactúa con el hardware de contadores de rendimiento.

Haga clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo verificar si los contadores de rendimiento del kernel están activos en Linux. Comenzaste utilizando el comando perf stat para medir los contadores de rendimiento de un comando sencillo como ls, observando la salida de varios eventos de rendimiento y sus recuentos. Esto demostró la funcionalidad básica de la herramienta perf para el análisis de rendimiento.

Luego, el laboratorio te guió a través de la verificación de la configuración de los contadores de rendimiento dentro del sistema de archivos /sys/kernel y la inspección de los registros relacionados con los contadores en la salida de dmesg. Estos pasos proporcionaron métodos para confirmar la compatibilidad del sistema y el estado activo de los contadores de rendimiento del kernel, ofreciendo formas alternativas de evaluar su disponibilidad más allá del comando perf stat.