21.2. Utilisation de certains outils bcc pour l'analyse des performances
Utilisez certains programmes prédéfinis de la bibliothèque BPF Compiler Collection (BCC) pour analyser efficacement et en toute sécurité les performances du système au cas par cas. L'ensemble des programmes pré-créés de la bibliothèque BCC peut servir d'exemple pour la création de programmes supplémentaires.
Conditions préalables
- Installation du paquet bcc-tools
- Autorisations de la racine
Utilisation de execsnoop pour examiner les processus du système
Exécutez le programme
execsnoop
dans un terminal :# /usr/share/bcc/tools/execsnoop
Dans un autre terminal, par exemple :
$ ls /usr/share/bcc/tools/doc/
Ce qui précède crée un processus éphémère de la commande
ls
.Le terminal exécutant
execsnoop
affiche une sortie similaire à la suivante :PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ ...
Le programme
execsnoop
imprime une ligne de sortie pour chaque nouveau processus, ce qui consomme des ressources système. Il détecte même les processus de programmes qui s'exécutent très brièvement, tels quels
, et que la plupart des outils de surveillance n'enregistreraient pas.Le site
execsnoop
affiche les champs suivants :-
PCOMM - Le nom du processus parent. (
ls
) -
PID - L'ID du processus. (
8382
) -
PPID - L'ID du processus parent. (
8287
) -
RET - La valeur de retour de l'appel système
exec()
(0
), qui charge le code du programme dans de nouveaux processus. - ARGS - Emplacement du programme lancé avec les arguments.
-
PCOMM - Le nom du processus parent. (
Pour plus de détails, d'exemples et d'options concernant execsnoop
, consultez le fichier /usr/share/bcc/tools/doc/execsnoop_example.txt
.
Pour plus d'informations sur exec()
, voir les pages du manuel exec(3)
.
Utiliser opensnoop pour savoir quels fichiers une commande ouvre
Exécutez le programme
opensnoop
dans un terminal :# /usr/share/bcc/tools/opensnoop -n uname
Ce qui précède imprime la sortie des fichiers qui ne sont ouverts que par le processus de la commande
uname
.Dans un autre terminal, entrez :
$ uname
La commande ci-dessus ouvre certains fichiers, qui sont capturés à l'étape suivante.
Le terminal exécutant
opensnoop
affiche une sortie similaire à la suivante :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 ...
Le programme
opensnoop
surveille l'appel systèmeopen()
sur l'ensemble du système et imprime une ligne de sortie pour chaque fichier queuname
a essayé d'ouvrir en cours de route.Le site
opensnoop
affiche les champs suivants :-
PID - L'ID du processus. (
8596
) -
COMM - Le nom du processus. (
uname
) -
FD - Le descripteur de fichier - une valeur que
open()
renvoie pour faire référence au fichier ouvert. (3
) - ERR - Erreurs éventuelles.
PATH - Emplacement des fichiers que
open()
a tenté d'ouvrir.Si une commande tente de lire un fichier inexistant, la colonne
FD
renvoie-1
et la colonneERR
imprime une valeur correspondant à l'erreur en question. Par conséquent,opensnoop
peut vous aider à identifier une application qui ne se comporte pas correctement.
-
PID - L'ID du processus. (
Pour plus de détails, d'exemples et d'options concernant opensnoop
, consultez le fichier /usr/share/bcc/tools/doc/opensnoop_example.txt
.
Pour plus d'informations sur open()
, voir les pages du manuel open(2)
.
Utilisation de biotop pour examiner les opérations d'E/S sur le disque
Exécutez le programme
biotop
dans un terminal :# /usr/share/bcc/tools/biotop 30
Cette commande vous permet de surveiller les principaux processus qui effectuent des opérations d'entrée/sortie sur le disque. L'argument garantit que la commande produira un résumé de 30 secondes.
NoteSi aucun argument n'est fourni, l'écran de sortie est rafraîchi par défaut toutes les 1 secondes.
Dans un autre terminal, entrez, par exemple, :
# dd if=/dev/vda of=/dev/zero
La commande ci-dessus lit le contenu du disque dur local et écrit la sortie dans le fichier
/dev/zero
. Cette étape génère un certain trafic d'E/S pour illustrerbiotop
.Le terminal exécutant
biotop
affiche une sortie similaire à la suivante :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 ...
Le site
biotop
affiche les champs suivants :-
PID - L'ID du processus. (
9568
) -
COMM - Le nom du processus. (
dd
) -
DISK - Le disque effectuant les opérations de lecture. (
vda
) - I/O - Nombre d'opérations de lecture effectuées. (16294)
- Kbytes - Le nombre de Kbytes atteint par les opérations de lecture. (14,440,636)
- AVGms - Le temps d'E/S moyen des opérations de lecture. (3.69)
-
PID - L'ID du processus. (
Pour plus de détails, d'exemples et d'options concernant biotop
, consultez le fichier /usr/share/bcc/tools/doc/biotop_example.txt
.
Pour plus d'informations sur dd
, voir les pages du manuel dd(1)
.
Utilisation de xfsslower pour révéler les lenteurs inattendues du système de fichiers
Exécutez le programme
xfsslower
dans un terminal :# /usr/share/bcc/tools/xfsslower 1
La commande ci-dessus mesure le temps que le système de fichiers XFS passe à effectuer des opérations de lecture, d'écriture, d'ouverture ou de synchronisation (
fsync
). L'argument1
garantit que le programme n'affiche que les opérations qui sont plus lentes que 1 ms.NoteEn l'absence d'arguments,
xfsslower
affiche par défaut les opérations plus lentes que 10 ms.Dans un autre terminal, entrez, par exemple, ce qui suit :
$ vim text
La commande ci-dessus crée un fichier texte dans l'éditeur
vim
afin d'initier certaines interactions avec le système de fichiers XFS.Le terminal qui exécute
xfsslower
affiche quelque chose de similaire après avoir sauvegardé le fichier de l'étape précédente :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' ...
Chaque ligne ci-dessus représente une opération dans le système de fichiers qui a pris plus de temps qu'un certain seuil.
xfsslower
est capable d'exposer les problèmes éventuels du système de fichiers, qui peuvent prendre la forme d'opérations inopinément lentes.Le site
xfsslower
affiche les champs suivants :-
COMM - Le nom du processus. (
b’bash'
) T - Le type d'opération. (
R
)- Rtête
- Write
- Sync
- OFF_KB - Le décalage du fichier en Ko. (0)
- FILENAME - Le fichier en cours de lecture, d'écriture ou de synchronisation.
-
COMM - Le nom du processus. (
Pour plus de détails, d'exemples et d'options concernant xfsslower
, consultez le fichier /usr/share/bcc/tools/doc/xfsslower_example.txt
.
Pour plus d'informations sur fsync
, voir les pages du manuel fsync(2)
.