37.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
execsnoopdans un terminal :/usr/share/bcc/tools/execsnoop
# /usr/share/bcc/tools/execsnoopCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dans un autre terminal, par exemple :
ls /usr/share/bcc/tools/doc/
$ ls /usr/share/bcc/tools/doc/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ce qui précède crée un processus éphémère de la commande
ls.Le terminal exécutant
execsnoopaffiche une sortie similaire à la suivante :PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ ...
PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le programme
execsnoopimprime 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
execsnoopaffiche 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
opensnoopdans un terminal :/usr/share/bcc/tools/opensnoop -n uname
# /usr/share/bcc/tools/opensnoop -n unameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ unameCopy to Clipboard Copied! Toggle word wrap Toggle overflow La commande ci-dessus ouvre certains fichiers, qui sont capturés à l'étape suivante.
Le terminal exécutant
opensnoopaffiche 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 ...
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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le programme
opensnoopsurveille l'appel systèmeopen()sur l'ensemble du système et imprime une ligne de sortie pour chaque fichier queunamea essayé d'ouvrir en cours de route.Le site
opensnoopaffiche 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
FDrenvoie-1et la colonneERRimprime une valeur correspondant à l'erreur en question. Par conséquent,opensnooppeut 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
biotopdans un terminal :/usr/share/bcc/tools/biotop 30
# /usr/share/bcc/tools/biotop 30Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# dd if=/dev/vda of=/dev/zeroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
biotopaffiche une sortie similaire à la suivante :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le site
biotopaffiche 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
xfsslowerdans un terminal :/usr/share/bcc/tools/xfsslower 1
# /usr/share/bcc/tools/xfsslower 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'argument1garantit que le programme n'affiche que les opérations qui sont plus lentes que 1 ms.NoteEn l'absence d'arguments,
xfssloweraffiche par défaut les opérations plus lentes que 10 ms.Dans un autre terminal, entrez, par exemple, ce qui suit :
vim text
$ vim textCopy to Clipboard Copied! Toggle word wrap Toggle overflow La commande ci-dessus crée un fichier texte dans l'éditeur
vimafin d'initier certaines interactions avec le système de fichiers XFS.Le terminal qui exécute
xfssloweraffiche quelque chose de similaire après avoir sauvegardé le fichier de l'étape précédente :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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.
xfsslowerest 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
xfssloweraffiche 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).