Red Hat Training
A Red Hat training course is available for RHEL 8
25.3. Utilización de determinadas herramientas bcc para el análisis del rendimiento
Esta sección describe cómo utilizar ciertos programas precreados de la biblioteca BPF Compiler Collection (BCC) para analizar de forma eficiente y segura el rendimiento del sistema en base a cada evento. El conjunto de programas precreados en la biblioteca BCC puede servir de ejemplo para la creación de programas adicionales.
Requisitos previos
- Biblioteca BCC instalada
- Permisos de la raíz
Uso de execsnoop para examinar los procesos del sistema
Ejecute el programa
execsnoop
en un terminal:# /usr/share/bcc/tools/execsnoop
En otro terminal ejecutar por ejemplo:
$ ls /usr/share/bcc/tools/doc/
Lo anterior crea un proceso de corta duración del comando
ls
.El terminal que ejecuta
execsnoop
muestra una salida similar a la siguiente:PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ sed 8385 8383 0 /usr/bin/sed s/^ *[0-9]\+ *// ...
El programa
execsnoop
imprime una línea de salida por cada nuevo proceso, que consume recursos del sistema. Incluso detecta procesos de programas que se ejecutan muy poco tiempo, comols
, y la mayoría de las herramientas de monitorización no los registrarían.La salida de
execsnoop
muestra los siguientes campos:-
PCOMM - El nombre del proceso padre. (
ls
) -
PID - El ID del proceso. (
8382
) -
PPID - El ID del proceso padre. (
8287
) -
RET - El valor de retorno de la llamada al sistema
exec()
(0
), que carga el código del programa en nuevos procesos. - ARGS - La ubicación del programa iniciado con argumentos.
-
PCOMM - El nombre del proceso padre. (
Para ver más detalles, ejemplos y opciones de execsnoop
, consulte el archivo /usr/share/bcc/tools/doc/execsnoop_example.txt
.
Para más información sobre exec()
, consulte las páginas del manual exec(3)
.
Uso de opensnoop para rastrear qué archivos abre un comando
Ejecute el programa
opensnoop
en un terminal:# /usr/share/bcc/tools/opensnoop -n uname
Lo anterior imprime la salida para los archivos, que son abiertos sólo por el proceso del comando
uname
.En otra terminal ejecutar:
$ uname
El comando anterior abre ciertos archivos, que se capturan en el siguiente paso.
El terminal que ejecuta
opensnoop
muestra una salida similar a la siguiente:PID COMM FD ERR PATH 8596 uname 3 0 /etc/ld.so.cache 8596 uname 3 0 /lib64/libc.so.6 8596 uname 3 0 /usr/lib/locale/locale-archive ...
El programa
opensnoop
vigila la llamada al sistemaopen()
en todo el sistema, e imprime una línea de salida para cada archivo queuname
intentó abrir en el camino.La salida de
opensnoop
muestra los siguientes campos:-
PID - El ID del proceso. (
8596
) -
COMM - El nombre del proceso. (
uname
) -
FD - El descriptor del archivo - un valor que
open()
devuelve para referirse al archivo abierto. (3
) - ERR - Cualquier error.
PATH - La ubicación de los archivos que
open()
intentó abrir.Si un comando intenta leer un archivo inexistente, la columna
FD
devuelve-1
y la columnaERR
imprime un valor correspondiente al error en cuestión. Como resultado,opensnoop
puede ayudarle a identificar una aplicación que no se comporta correctamente.
-
PID - El ID del proceso. (
Para ver más detalles, ejemplos y opciones de opensnoop
, consulte el archivo /usr/share/bcc/tools/doc/opensnoop_example.txt
.
Para más información sobre open()
, consulte las páginas del manual open(2)
.
Uso de biotop para examinar las operaciones de E/S en el disco
Ejecute el programa
biotop
en un terminal:# /usr/share/bcc/tools/biotop 30
El comando permite supervisar los procesos principales, que realizan operaciones de E/S en el disco. El argumento asegura que el comando producirá un resumen de 30 segundos.
NotaSi no se proporciona ningún argumento, la pantalla de salida se actualiza por defecto cada 1 segundo.
En otro terminal ejecute por ejemplo :
# dd if=/dev/vda of=/dev/zero
El comando anterior lee el contenido del dispositivo de disco duro local y escribe la salida en el archivo
/dev/zero
. Este paso genera cierto tráfico de E/S para ilustrarbiotop
.El terminal que ejecuta
biotop
muestra una salida similar a la siguiente:PID COMM D MAJ MIN DISK I/O Kbytes AVGms 9568 dd R 252 0 vda 16294 14440636.0 3.69 48 kswapd0 W 252 0 vda 1763 120696.0 1.65 7571 gnome-shell R 252 0 vda 834 83612.0 0.33 1891 gnome-shell R 252 0 vda 1379 19792.0 0.15 7515 Xorg R 252 0 vda 280 9940.0 0.28 7579 llvmpipe-1 R 252 0 vda 228 6928.0 0.19 9515 gnome-control-c R 252 0 vda 62 6444.0 0.43 8112 gnome-terminal- R 252 0 vda 67 2572.0 1.54 7807 gnome-software R 252 0 vda 31 2336.0 0.73 9578 awk R 252 0 vda 17 2228.0 0.66 7578 llvmpipe-0 R 252 0 vda 156 2204.0 0.07 9581 pgrep R 252 0 vda 58 1748.0 0.42 7531 InputThread R 252 0 vda 30 1200.0 0.48 7504 gdbus R 252 0 vda 3 1164.0 0.30 1983 llvmpipe-1 R 252 0 vda 39 724.0 0.08 1982 llvmpipe-0 R 252 0 vda 36 652.0 0.06 ...
La salida de
biotop
muestra los siguientes campos:-
PID - El ID del proceso. (
9568
) -
COMM - El nombre del proceso. (
dd
) -
DISK - El disco que realiza las operaciones de lectura. (
vda
) - I/O - El número de operaciones de lectura realizadas. (16294)
- Kbytes - La cantidad de Kbytes alcanzados por las operaciones de lectura. (14,440,636)
- AVGms - El tiempo medio de E/S de las operaciones de lectura. (3.69)
-
PID - El ID del proceso. (
Para ver más detalles, ejemplos y opciones de biotop
, consulte el archivo /usr/share/bcc/tools/doc/biotop_example.txt
.
Para más información sobre dd
, consulte las páginas del manual dd(1)
.
Uso de xfsslower para exponer operaciones del sistema de archivos inesperadamente lentas
Ejecute el programa
xfsslower
en un terminal:# /usr/share/bcc/tools/xfsslower 1
El comando anterior mide el tiempo que el sistema de archivos XFS emplea en realizar operaciones de lectura, escritura, apertura o sincronización (
fsync
). El argumento1
asegura que el programa muestra sólo las operaciones que son más lentas que 1 ms.NotaCuando no se proporcionan argumentos,
xfsslower
muestra por defecto las operaciones más lentas de 10 ms.En otro terminal ejecute, por ejemplo, lo siguiente:
$ vim text
El comando anterior crea un archivo de texto en el editor
vim
para iniciar cierta interacción con el sistema de archivos XFS.El terminal que ejecuta
xfsslower
muestra algo similar al guardar el archivo del paso anterior:TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 13:07:14 b'bash' 4754 R 256 0 7.11 b'vim' 13:07:14 b'vim' 4754 R 832 0 4.03 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 32 20 1.04 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 1982 0 2.30 b'vimrc' 13:07:14 b'vim' 4754 R 1393 0 2.52 b'getscriptPlugin.vim' 13:07:45 b'vim' 4754 S 0 0 6.71 b'text' 13:07:45 b'pool' 2588 R 16 0 5.58 b'text' ...
Cada línea de arriba representa una operación en el sistema de archivos, que tomó más tiempo que un determinado umbral.
xfsslower
es bueno para exponer posibles problemas del sistema de archivos, que pueden tomar la forma de operaciones inesperadamente lentas.La salida de
xfsslower
muestra los siguientes campos:-
COMM - El nombre del proceso. (
b’bash'
) T - El tipo de operación. (
R
)- Read
- Write
- Sync
- OFF_KB - El desplazamiento del archivo en KB. (0)
- FILENAME - El archivo que se está leyendo, escribiendo o sincronizando.
-
COMM - El nombre del proceso. (
Para ver más detalles, ejemplos y opciones de xfsslower
, consulte el archivo /usr/share/bcc/tools/doc/xfsslower_example.txt
.
Para más información sobre fsync
, consulte las páginas del manual fsync(2)
.