iostat - Cheatsheet Statistiques CPU et I/O Disque
iostat rapporte l”utilisation CPU et les statistiques I/O disque par appareil — débit, IOPS, latence des requêtes et profondeur de file d”attente. C”est l”arrêt standard en première ligne pour diagnostiquer les goulots d”étranglement du stockage sur Linux : le disque est-il saturé, les requêtes s”empilent-elles, la latence grimpe-t-elle ? Il est livré dans le paquet sysstat aux côtés de mpstat, pidstat et sar.
Installation
| Plateforme | Commande |
|---|
| Debian/Ubuntu | sudo apt install sysstat |
| Fedora/RHEL | sudo dnf install sysstat |
| Arch Linux | sudo pacman -S sysstat |
| macOS | iostat est intégré (sortie différente) |
| Vérification | iostat -V |
Utilisation Basique
| Commande | Description |
|---|
iostat | Un rapport depuis le démarrage (CPU + appareils) |
iostat 2 | Rafraîchir toutes les 2 secondes |
iostat 2 5 | 5 rapports, 2 secondes d”intervalle |
iostat -x | Statistiques étendues (les utiles) |
iostat -d | Statistiques d”appareil uniquement (pas de CPU) |
iostat -c | Statistiques CPU uniquement |
La Commande Que Vous Voulez Vraiment
# Étendu, lisible par l''homme, par appareil, chaque 2s
iostat -xmt 2
| Drapeau | Effet |
|---|
-x | Statistiques étendues (util%, await, aqu-sz, …) |
-m | Rapporter en MB/s (utiliser -k pour KB/s) |
-t | Imprimer un timestamp avec chaque rapport |
-p DEV | Afficher les partitions d”un appareil (ex. -p sda) |
-d 2 | Rapport d”appareil toutes les 2 secondes |
-h | Formatage lisible par l”homme, ami NVMe |
Lecture de la Sortie Étendue (-x)
| Colonne | Signification |
|---|
r/s, w/s | Requêtes de lecture/écriture par seconde (IOPS) |
rMB/s, wMB/s | Débit de lecture/écriture |
rareq-sz / wareq-sz | Taille moyenne de requête |
r_await, w_await | Latence moyenne de lecture/écriture (ms) — métrique clé |
aqu-sz | Profondeur moyenne de file d”attente (requêtes en vol) |
%util | Fraction de temps que l”appareil était occupé |
Interprétation des Signaux
| Observation | Interprétation |
|---|
%util près de 100% | L”appareil est saturé (prudent sur SSD/NVMe — peut paralléliser) |
await élevé (dizaines de ms+) | Les requêtes sont lentes — goulot d”étranglement de latence |
aqu-sz élevé | Les requêtes s”empilent plus vite que le disque ne s”écoule |
| IOPS élevé, débit faible | Petit I/O aléatoire (charge de travail typique DB/metadata) |
| IOPS faible, débit élevé | Grand I/O séquentiel (sauvegardes, streaming) |
Sur SSD/NVMe modernes, %util peut lire 100% tandis que l”appareil a encore de la marge (il traite les requêtes en parallèle). Faire confiance à await et aqu-sz plus qu”à %util là-bas.
Section CPU
| Champ | Signification |
|---|
%user / %nice | Temps en espace utilisateur |
%system | Temps dans le noyau |
%iowait | CPU idle attendant l”I/O (indice de pression de stockage) |
%steal | Temps volé par l”hypervisor (voisins bruyants) |
%idle | Temps idle |
Un %iowait élevé aux côtés d”un await disque élevé pointe carrément vers le stockage comme goulot d”étranglement.
Flux de Travail Courants
# Observer un goulot d''étranglement disque soupçonné en direct
iostat -xmt 2
# Focus sur un appareil et ses partitions
iostat -xmt -p nvme0n1 2
# Corréler iowait CPU avec latence d''appareil pendant un test de charge
iostat -xmt 1 60 > iostat.log
iostat vs Outils Connexes
| Outil | Focus |
|---|
| iostat | Statistiques I/O par appareil + CPU |
| iotop | Quel processus fait l”I/O |
| dstat/dool | Vue combinée CPU/disque/réseau |
| sar | Activité système historique/enregistrée |
Utiliser iostat pour voir que l”appareil est lent, puis iotop pour trouver quel processus est responsable.
Ressources