44.2. Suivi du temps d'E/S pour chaque lecture ou écriture de fichier avec SystemTap
Vous pouvez utiliser le script iotime.stp SystemTap pour surveiller le temps nécessaire à chaque processus pour lire ou écrire dans un fichier. Cela vous aide à déterminer quels fichiers sont lents à charger sur un système.
Conditions préalables
- Vous avez installé SystemTap comme décrit dans la section Installation de Systemtap.
Procédure
Exécutez le script iotime.stp:
# stap --example iotime.stp
Le script suit chaque fois qu'un appel système ouvre, ferme, lit et écrit dans un fichier. Pour chaque fichier auquel un appel système accède, il compte le nombre de microsecondes nécessaires à la fin des lectures ou des écritures et enregistre la quantité de données, en octets, lues ou écrites dans le fichier.
La sortie contient :
- Un horodatage, en microsecondes
- ID et nom du processus
-
Un drapeau
access
ouiotime
Le fichier consulté
Si un processus a pu lire ou écrire des données, une paire de lignes access et
iotime
doit apparaître ensemble. La ligne d'accès fait référence à l'heure à laquelle un processus donné a commencé à accéder à un fichier. La fin de la ligne access indique la quantité de données lues ou écrites. La ligneiotime
indique le temps, en microsecondes, que le processus a mis pour effectuer la lecture ou l'écriture.
La sortie du script iotime.stp
ressemble à ce qui suit :
[...] 825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 [...] 117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 [...] 3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 3973744 2886 (sendmail) iotime /proc/loadavg time: 11 [...]