Descripción general
perf es una herramienta esencial para que los desarrolladores y administradores de sistemas diagnostiquen y optimicen problemas de rendimiento. Ofrece amplias capacidades de análisis de rendimiento, como la recopilación de estadísticas, el registro de eventos y la generación de informes, a través de varios subcomandos.
Funciones principales
- Perfilado de CPU (uso de CPU, análisis de pila de llamadas)
- Monitorización de eventos de hardware (fallos de caché, fallos de predicción de ramas, etc.)
- Monitorización de eventos de software (eventos de planificación, fallos de página, etc.)
- Seguimiento y análisis de llamadas al sistema
- Trazado dinámico (kprobes, uprobes)
Opciones principales (subcomandos)
perf realiza funciones a través de varios subcomandos. Cada subcomando tiene sus propias opciones.
perf stat: Recopilación de estadísticas
perf record: Registro de datos de rendimiento
perf report: Análisis de datos registrados
perf list: Lista de eventos disponibles
Comando generado:
Combina los comandos.
Descripción:
`perf` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Varios ejemplos de cómo utilizar el comando perf.
Ver estadísticas de ejecución del comando ls
perf stat ls
Comprueba las estadísticas básicas de rendimiento, como ciclos de CPU, recuento de instrucciones y fallos de caché, mientras se ejecuta el comando ls.
Monitorizar un proceso específico durante 5 segundos
perf stat -p 1234 sleep 5
Monitoriza las estadísticas de rendimiento de un proceso con PID 1234 durante 5 segundos. (Reemplace con el PID real)
Registrar gráfico de llamadas durante la ejecución de la aplicación
perf record -g ./my_app
Registra datos de rendimiento, incluida la información de la pila de llamadas de funciones, durante la ejecución de my_app. Los datos registrados se guardan en el archivo perf.data.
Analizar datos registrados
perf report
Analiza interactivamente el archivo perf.data generado por perf record para visualizar visualmente los cuellos de botella de rendimiento.
Ver la lista de eventos de hardware disponibles
perf list hw
Consulta la lista de todos los eventos de rendimiento de hardware que perf puede monitorizar en el sistema actual.
Instalación
perf puede no estar instalado por defecto en la mayoría de las distribuciones de Linux. Puede instalarlo utilizando los siguientes comandos.
Debian/Ubuntu
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
Comandos para instalar perf en sistemas basados en Debian o Ubuntu. Debe instalar el paquete linux-tools correspondiente a su versión del kernel.
CentOS/RHEL/Fedora
sudo yum install perf
# o sudo dnf install perf (Fedora)
Comandos para instalar perf en sistemas basados en CentOS, RHEL o Fedora.
Consejos y precauciones
Consejos útiles y precauciones al usar perf.
Permisos de root
La mayoría de los comandos perf requieren permisos de root (sudo) ya que recopilan datos de rendimiento de todo el sistema.
- Si recibe un error de 'Operation not permitted' al ejecutar un comando perf, intente usar sudo.
Carga de símbolos del kernel
Si los nombres de las funciones se muestran como 'unknown' en perf report, necesita cargar los símbolos del kernel. Esto se puede lograr instalando los paquetes 'kernel-debuginfo' o 'kernel-devel'.
- CentOS/RHEL: `sudo debuginfo-install kernel`
- Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`
Sobrecarga
perf recopila datos muy detallados, por lo que puede causar una ligera sobrecarga en el sistema, especialmente cuando se utiliza `perf record` con una alta frecuencia de muestreo. Úselo con precaución en entornos de producción.
- En sistemas sensibles al rendimiento, comience con una frecuencia de muestreo baja (opción -F) para minimizar la sobrecarga.
Uso de perf top
`perf top` es un subcomando útil que muestra las funciones que consumen más CPU en tiempo real. Es adecuado para la monitorización básica del rendimiento.
- Puede usar `perf top` para identificar rápidamente las funciones que consumen la mayor parte del tiempo de CPU en el sistema actual.