LINUX

Cómo instalar la herramienta perf en CentOS y Ubuntu

Perf es un contador de rendimiento para Linux. Con él puede conocer muchos secretos del sistema Linux en ejecución. Por ejemplo, por qué se producen errores de caché L2. Por qué su disco muestra actividad, qué rutas de código están bloqueando el kernel y muchas otras cosas. En este artículo, mostraremos los conceptos básicos de rendimiento y cómo puede usarlo para obtener algunos datos sobre el rendimiento de su sistema.

Cómo instalar perf

La instalación de las herramientas del espacio de usuario perf a través de termial (junto con awk) es sencilla.

En Ubuntu escribe

sudo apt install linux-tools-common gawk

En CentOS y Fedora

sudo yum install perf gawk

Pocos usos de la herramienta perf.

Permite grabar la E / S del disco usando el siguiente comando.

sudo perf record -e block:block_rq_issue -ag

Grabará datos, puede presionar ctrl-c para detenerlo después de un par de segundos. Luego emita el siguiente comando

sudo perf report

Y obtendrás algo como esto:

informe de rendimiento

informe ampliado

La ventaja significa que el informe se puede expandir y puede ver qué rutas de código son responsables. Expandí una línea en la segunda imagen, allí vemos más información.

Vamos a comprobar los fallos de caché a continuación. Este comando registrará fallas de caché de datos de nivel 1 de cpu

sudo perf record -e L1-dcache-load-misses -c 10000 -ag -- sleep 5

Entonces, cuando verifiquemos el informe con sudo perf report -f veremos qué código es responsable de los errores

Skype provoca pérdidas de caché

Vemos que la función de Skype es responsable del 0,83% de las pérdidas de caché en la caché de datos L1.

Hasta ahora grabamos y luego analizamos el registro, pero ¿qué pasa si lo desea en tiempo real, para grabar y ver la salida de inmediato? Siga leyendo, en la siguiente sección cubrimos eso.

Scripts en tiempo real

Perf es una herramienta muy poderosa, pero no al mismo tiempo no es la herramienta mejor documentada debido a los frecuentes cambios en el marco subyacente. Por tanto, para facilitar el recuento del rendimiento en tiempo real, utilizaremos un conjunto de guiones de github. Vamos a clonarlos

cd

git clone --depth 1 https://github.com/brendangregg/perf-tools

cd perf-tools

Y ya está todo listo. Ahora ejecutamos algunos scripts:

sudo ./iolatency

iolatency, datos de latencia del disco

Este script nos dará la latencia del disco como histograma. Lo he ejecutado solo por un segundo, puede hacer que funcione por más tiempo. No quiero porque tengo un disco duro de 5400 rpm y los resultados no pueden ser buenos, así que ¿por qué ejecutarlo?

Probemos algunos scripts más.

sudo ./fs/cachestat

cachestat

Este script usa perf para obtener fallos de caché cada segundo y lo imprime en una línea. Tenga en cuenta que los primeros 3 segundos no hubo fallas, y los últimos comenzaron. Eso se debe a que comencé a reconstruir mi proyecto en Android Studio justo en ese momento. Puedo decir que Intel hizo un predictor de sucursales bastante bueno en Haswell. El porcentaje de aciertos de caché rara vez cae por debajo del 95% en mi i7 con 6 MB de caché L3.

 sudo ./kernel/funccount -t 5 -d 5 'ext4*'
Tracing "ext4*" for 5 seconds. Top 5 only...

FUNC COUNT
ext4_mark_iloc_dirty 109
ext4_reserve_inode_write 109
ext4_get_group_desc 112
ext4_inode_table 112
ext4_journal_check_start 155

Esta secuencia de comandos rastrea la función del kernel que escribe (ext4 en este ejemplo) durante la cantidad de tiempo que escribe (-d 5 segundos aquí) y genera la lista superior con tantos puntos como establezca (-t 5 aquí).

Algunos scripts que no son en tiempo real

Este script usa perf_events para contar las llamadas al sistema:

sudo ./syscount -c
Tracing... Ctrl-C to end.
^Csleep: Interrupt
SYSCALL COUNT
exit 1
lseek 1
newuname 1
dup 2
sched_getaffinity 2
tgkill 2
timerfd_settime 2
unlink 2
access 3
prctl 3
set_robust_list 4
fdatasync 5
getsockopt 5
epoll_ctl 6
newlstat 6
ftruncate 7
munmap 8
shutdown 8
inotify_add_watch 9
bind 10
mmap 14

No es tiempo real como el anterior, debe presionar ctrl-C para detener el conteo y luego obtiene la salida.

Si desea realizar un seguimiento de la llamada de un proceso específico, primero debe obtener su PID con el comando

sudo ./syscount -v

y luego necesita usar un número pid como este

./syscount -cp 5656

para ver qué syscalls un proceso con pid 5656 llama más.

Conclusión

Hemos analizado ejemplos básicos de lo que se puede hacer con perf para medir los datos de rendimiento de su sistema. Pero solo rascamos la superficie, ya que perf es una herramienta realmente extensa y puedes usarla para obtener muchos detalles. Desafortunadamente, solo podemos llegar hasta cierto punto en un artículo. Gracias por leer y buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar