Les Suspects Habituels : iostat, vmstat et dstat
Commençons par la sainte trinité des outils de surveillance des performances :
1. iostat : Le Détective I/O
Quand les entrées/sorties disque vous donnent des maux de tête, iostat
est votre aspirine. Cet outil pratique vous offre un aperçu de l'utilisation du CPU et des statistiques I/O pour tous vos appareils.
$ iostat -xz 1
Linux 5.4.0-42-generic (monserveur) 15/06/2023 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.43 0.00 1.22 0.31 0.00 96.04
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 0.35 2.13 14.44 34.96 0.00 0.57 0.00 21.05 0.57 2.50 0.01 41.54 16.43 0.40 0.10
Que nous dit ce rapport ? Eh bien, notre système est plutôt inactif. Le CPU est en attente 96% du temps, et notre disque (sda) est à peine utilisé avec seulement 0,10% d'utilisation.
2. vmstat : Le Maestro de la Mémoire
vmstat
est votre fenêtre sur l'âme de la mémoire de votre système. Il vous montre tout, de la longueur de la file d'attente d'exécution à l'utilisation du swap.
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 6981496 191268 724132 0 0 3 5 36 79 2 1 97 0 0
0 0 0 6981496 191268 724132 0 0 0 0 209 355 1 0 99 0 0
Regardez cette colonne free
- nous avons environ 7 Go de mémoire libre. Pas étonnant que notre système soit si détendu !
3. dstat : Le Touche-à-tout
Si iostat
et vmstat
avaient un enfant, ce serait dstat
. Cet outil polyvalent combine les statistiques CPU, disque, réseau, pagination et système en une seule sortie colorée.
$ dstat -cdngy
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 97 0 0| 14k 40k| 0 0 | 0 0 | 237 420
1 0 99 0 0| 0 0 | 66B 722B| 0 0 | 206 357
1 0 99 0 0| 0 0 | 60B 722B| 0 0 | 208 355
Voilà ce que j'appelle un guichet unique pour les statistiques système !
Creuser Plus Profond : Les Héros Méconnus
Mais attendez, il y a plus ! Explorons quelques outils moins connus mais tout aussi puissants :
4. sar : Le Voyageur du Temps
sar
(System Activity Reporter) est comme une machine à remonter le temps pour vos statistiques système. Il peut vous montrer des données historiques et même générer de jolis graphiques.
$ sar -u 1 3
Linux 5.4.0-42-generic (monserveur) 15/06/2023 _x86_64_ (4 CPU)
13:00:01 CPU %user %nice %system %iowait %steal %idle
13:00:02 all 2.01 0.00 0.75 0.25 0.00 96.98
13:00:03 all 1.75 0.00 0.75 0.00 0.00 97.49
13:00:04 all 1.75 0.00 0.75 0.25 0.00 97.24
Average: all 1.84 0.00 0.75 0.17 0.00 97.24
Conseil de pro : Utilisez sar -A
pour voir TOUTES les statistiques. Mais attention, c'est comme boire à une lance à incendie !
5. perf : Le Puissant Outil de Profilage
Quand vous devez aller plus loin, perf
est votre équipement de spéléologie. Il peut profiler l'utilisation du CPU, tracer les appels système et même analyser les erreurs de cache.
$ sudo perf top
Samples: 42K of event 'cpu-clock', 4000 Hz, Event count (approx.): 5250000000 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
7.89% [kernel] [k] _raw_spin_unlock_irqrestore
4.32% [kernel] [k] finish_task_switch
3.21% [kernel] [k] __schedule
2.96% [kernel] [k] schedule
Regardez ça ! La fonction _raw_spin_unlock_irqrestore
du noyau utilise presque 8% de notre CPU. Il est peut-être temps de plonger dans le code du noyau ?
L'Intrigue S'épaissit : Visualiser les Performances
Parfois, une image vaut mille sorties strace
. Voici quelques outils graphiques :
6. htop : Le Visualiseur de Processus Interactif
Pensez à top
sous stéroïdes. htop
vous offre une vue colorée et interactive de vos processus.
7. atop : Le Moniteur de Système et de Processus
atop
est comme le cousin surdoué de top
. Il affiche des compteurs au niveau du système et des statistiques par processus en une seule vue.
$ atop
ATOP - monserveur 2023/06/15 13:15:23 ------------------------------
PRC | sys 1.85s | user 3.70s | #proc 213 | #zombie 0 | #exit 0 |
CPU | sys 2% | user 4% | irq 0% | idle 94% | wait 0% |
CPL | avg1 0.02 | avg5 0.05 | avg15 0.05 | csw 53592 | intr 43357 |
MEM | tot 15.5G | free 6.8G | cache 724.7M | buff 191.3M | slab 409.8M |
SWP | tot 15.9G | free 15.9G | | vmcom 4.7G | vmlim 23.7G |
DSK | sda | busy 0% | read 131 | write 644 | avio 2.50 ms |
NET | transport | tcpi 37 | tcpo 36 | udpi 0 | udpo 0 |
NET | network | ipi 37 | ipo 36 | ipfrw 0 | deliv 37 |
NET | eth0 ---- | pcki 19 | pcko 18 | si 1 Kbps | so 1 Kbps |
PID SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPU CMD 1/600
1829 0.37s 0.73s 0K 0K 0K 0K -- - R 1% atop
1 0.02s 0.03s 0K 0K 0K 0K -- - S 0% systemd
Voilà ce que j'appelle une surcharge d'informations !
L'Ingrédient Secret : Scripts de Surveillance Personnalisés
Parfois, les outils standards ne suffisent pas. C'est là que vous retroussez vos manches et écrivez vos propres scripts de surveillance. Voici un exemple simple qui combine les données de iostat
et vmstat
:
#!/usr/bin/env python3
import subprocess
import time
def get_iostat():
output = subprocess.check_output("iostat -c 1 1 | tail -n 2 | head -n 1", shell=True).decode()
cpu_stats = output.split()
return float(cpu_stats[5]) # %idle
def get_vmstat():
output = subprocess.check_output("vmstat 1 2 | tail -n 1", shell=True).decode()
stats = output.split()
return int(stats[3]) # free memory
while True:
cpu_idle = get_iostat()
free_mem = get_vmstat()
print(f"CPU Idle: {cpu_idle}%, Free Memory: {free_mem}K")
time.sleep(5)
Lancez ce script, et vous avez votre propre mini-système de surveillance !
À Retenir : Devenez le Sherlock Holmes de la Performance Système
Surveiller les systèmes Linux à bas niveau, c'est comme être un détective dans un roman cyberpunk. Vous avez vos outils (iostat, vmstat, dstat), votre loupe (perf), et votre Watson (scripts personnalisés). La clé est de savoir quel outil utiliser quand, et comment interpréter les résultats.
Rappelez-vous :
- Commencez par les bases (iostat, vmstat, dstat) pour un aperçu rapide
- Plongez plus profondément avec des outils spécialisés comme perf si nécessaire
- Visualisez les données avec htop et atop pour une perspective différente
- N'ayez pas peur d'écrire des scripts personnalisés pour vos besoins spécifiques
Et surtout, pratiquez, pratiquez, pratiquez ! Plus vous surveillez de systèmes, mieux vous serez à repérer les anomalies et à résoudre les énigmes de performance.
Réflexion
"L'outil de débogage le plus efficace reste la réflexion attentive, couplée à des instructions print judicieusement placées." — Brian Kernighan
Bien que nous ayons tous ces outils sophistiqués à notre disposition, parfois la meilleure approche est de prendre du recul, de réfléchir de manière critique au problème, et peut-être d'ajouter quelques instructions echo
stratégiques. Ne laissez pas les outils éclipser vos compétences en résolution de problèmes !
Et Après ?
Maintenant que vous êtes armé de ces connaissances, pourquoi ne pas configurer un environnement de test et commencer à expérimenter ? Essayez de simuler différents scénarios de charge et voyez comment ces outils réagissent. Ou mieux encore, appliquez ces techniques à un problème réel que vous rencontrez. La preuve du pudding est dans le manger, après tout !
Bonne surveillance, et que vos systèmes soient toujours performants !