Introducción
La herramienta perf de Linux es una utilidad de línea de comandos liviana para generar perfiles y monitorear el rendimiento de la CPU en sistemas Linux. Aunque la herramienta es simple, proporciona información detallada que ayuda a analizar las CPU.
El comando contiene muchos subcomandos para recopilar, rastrear y analizar datos de eventos de la CPU.
Esta guía demuestra la herramienta Perf a través de ejemplos.
Requisitos previos
- Acceso a la terminal.
- Acceso a root o un usuario con privilegios sudo.
- Un editor de texto, como nano o Vi/Vim.
Cómo instalar perf
El programa perf no viene preinstalado en los sistemas Linux. La instalación difiere según la distribución de Linux:
- Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
- RHEL/CentOS
sudo yum install perf
- Fedora
sudo dnf install perf
Verifique la instalación con:
perf --version
La salida imprime el número de versión, lo que indica que la instalación fue exitosa.
Permitir a los usuarios regulares usar perf
El perf
el comando, de forma predeterminada, requiere sudo
privilegios Para permitir que los usuarios regulares usen perf
, haga lo siguiente:
1. Cambie al usuario root:
sudo su -
2. Introduzca el siguiente comando:
echo 0 > /proc/sys/kernel/perf_event_paranoid
El comando permite a los usuarios regulares usar la utilidad perf en la sesión actual.
3. Vuelva al usuario normal con:
exit
Para conservar los cambios, haga lo siguiente:
1. Edite el sysctl archivo de configuración:
sudo nano /etc/sysctl.conf
2. Agregue lo siguiente al archivo:
kernel.perf_event_paranoid = 0
3. Guarde los cambios y salga de nano.
Sintaxis del comando perf de Linux
El perf
la sintaxis del comando es:
perf <options> subcommand <options/arguments>
La herramienta perf funciona como git. Actúa como una interfaz para varios subcomandos y diferentes actividades. Ejecutar el comando sin opciones ni argumentos muestra la lista de subcomandos disponibles.
Subcomandos de rendimiento de Linux
A continuación se muestra una tabla que describe perf
comúnmente utilizados subcomandos:
Subcomando | Descripción |
---|---|
annotate | Lee datos de rendimiento y muestra el código anotado. |
list | Enumera todos los eventos medibles. |
stat | Recopila estadísticas de rendimiento. |
record | Graba muestras en perf.data . |
report | Lee datos de rendimiento y muestra el perfil. |
script | Lee datos de rendimiento y muestra la salida de rastreo. |
top | Herramienta de creación de perfiles. |
Los subcomandos tienen opciones adicionales. Para mostrar opciones para subcomandos individuales, ejecute:
perf <subcommand> -h
El resultado muestra una breve ventana de ayuda para el subcomando específico.
Ejemplos de comandos perf de Linux
Para probar el perf
comando, estamos usando la pequeña instancia BMC s0.d1 de phoenixNAP que ejecuta Ubuntu 18.04.
- Configuración de un cortafuegos en una instancia de BMC s0.d1.small
- Cómo configurar un balanceador de carga en un servidor BMC s0.d1.small
- Configuración de un entorno Sandbox en una instancia de BMC S.0
Al perfilar una CPU con el perf
comando, el flujo de trabajo típico es usar:
1. perf list
para buscar eventos.
2. perf stat
para contar los eventos.
3. perf record
para escribir eventos en un archivo.
4. perf report
para navegar por el archivo grabado.
5. perf script
para volcar eventos después del procesamiento.
Los resultados difieren según el sistema y los recursos disponibles localmente.
1. Lista de los eventos disponibles
Enumere todos los eventos medibles usando perf con el list
subcomando:
sudo perf list
La salida enumera todos los eventos admitidos, independientemente del tipo. Sin sudo
, el comando muestra una lista más corta. Cuando haga referencia a eventos en otros subcomandos, use el -e
etiqueta seguida del nombre del evento de la primera columna.
Agregue el parámetro de filtro después del comando para limitar la lista por nombre de evento (primera columna) o tipo de evento (segunda columna). Por ejemplo, muestre solo eventos de hardware con:
sudo perf list hardware
O alternativamente:
sudo perf list hw
La salida muestra el resultado filtrado en función del parámetro o parámetros proporcionados.
2. Ver el perfil del sistema en tiempo real de la CPU
Para ver el perfil de la CPU en tiempo real, use el top
subcomando:
sudo perf top
El comando muestra funciones de muestra en tiempo real, similar al comando superior de Linux. La salida imprime las siguientes tres columnas en orden de izquierda a derecha:
1. Uso de CPU vinculado a una función expresada en porcentajes.
2. La biblioteca o programa que está usando la función.
3. El símbolo y el nombre de la función, donde [k]
es el espacio del kernel y [.]
es espacio de usuario.
Por defecto, perf top
supervisa todas las CPU en línea. Las opciones adicionales permiten:
- Supervisión de todas las CPU (incluidas las inactivas) (
-a
). - Supervisión de CPU específicas (
-C
). - Controlar la frecuencia de muestreo (
-F
).
Para mostrar opciones adicionales durante el modo de navegación, presione h .
Para salir del generador de perfiles y volver a la terminal, presione q .
3. Ver estadísticas de rendimiento de la CPU con perf
Para mostrar las estadísticas de rendimiento de la CPU para todos los eventos estándar de software y hardware de toda la CPU, ejecute:
sudo perf stat -a sleep 5
El resultado muestra un informe detallado de todo el sistema recopilado durante cinco segundos. Sin sleep 5
, el sistema mide hasta la terminación con CTRL +C .
4. Ver el rendimiento de la CPU para un comando
Para verificar las estadísticas de rendimiento de la CPU para un comando específico, ejecute:
sudo perf stat <command>
Por ejemplo, busque el ls
comando con:
sudo perf stat ls
El tiempo total que tarda un comando se muestra como tiempo transcurrido al final de la salida.
5. Ver el rendimiento de la CPU para un proceso
Adjunte estadísticas de rendimiento de la CPU a un proceso en ejecución específico utilizando el -p
etiqueta y proporcionando el ID del proceso (PID):
sudo perf -p <PID> sleep 5
La salida recopila y muestra estadísticas de rendimiento para el proceso dado.
6. Contar llamadas al sistema de eventos por tipo
Para contar las llamadas al sistema del kernel de Linux por tipo, ejecute:
sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5
Después de cinco segundos, la salida muestra todas las llamadas de todo el sistema y su recuento.
7. Grabar ciclos de CPU
Los ciclos de CPU son un evento de hardware. Para registrar ciclos de CPU, use el record
subcomando y proporcione el nombre del evento con el -e
etiqueta:
sudo perf record -e cycles sleep 10
La grabación guarda los datos en un perf.data expediente. La salida imprime el tamaño del archivo y cuántas muestras de datos contiene.
8. Ver resultados de rendimiento
Para ver los resultados de rendimiento de perf.data archivo, ejecute:
sudo perf report
El comando ayuda a leer los perf.data archivo, que muestra todos los eventos y estadísticas recopilados. Para salir del visor, presiona CTRL +C .
9. Modificar formato de salida de muestra
Para ver la salida de muestra en formato de salida estándar, ejecute:
sudo perf report --stdio
Las modificaciones adicionales incluyen mostrar el número de muestra para cada evento (-n
) y mostrar columnas específicas (--sort <column name>
). Por ejemplo:
sudo perf report -n --sort comm,symbol --stdio
La salida agrega una columna para el número de muestra y la información de comando y símbolo.
10. Mostrar salida de seguimiento
Usa el script
subcomando para enumerar todos los eventos de perf.dat una. Por ejemplo:
sudo perf script
La salida imprime los perf.data detalles en orden de tiempo. Usa el script
subcomando como datos de posprocesamiento.
11. Mostrar encabezado de seguimiento
Para mostrar todos los eventos de perf.data con información de encabezado de seguimiento adicional, ejecute:
sudo perf script --header
El resultado muestra la información del encabezado del archivo, como cuándo comenzó el seguimiento, cuánto duró, la información de la CPU y el comando que obtuvo los datos. La lista de eventos se encuentra después de la información del encabezado.
12. Volcar datos sin procesar
Para volcar datos sin procesar como hexadecimal desde perf.data archivo, use el -D
opción:
sudo perf script -D
El resultado es la información de seguimiento de eventos sin procesar en formato ASCII. La opción es útil para la depuración de eventos.
13. Anotar datos
Para anotar datos y desensamblar más, use el annotate
subcomando:
sudo perf annotate --stdio -v
Los -v
La opción proporciona una salida detallada. El resultado muestra el código fuente y el desmontaje de los eventos.
Conclusión
Después de leer los ejemplos de esta guía, conoce los conceptos básicos del uso de Linux perf
comando y algunos de los principales subcomandos. Utilice el comando man para ver la documentación completa de la herramienta de análisis de rendimiento y los subcomandos.