Le load average mesure le nombre moyen de processus en attente d'exécution ou d'I/O sur 1, 5 et 15 minutes. Pour l'interpréter, divisez-le par le nombre de cœurs CPU (nproc) : un ratio supérieur à 1.0 signifie que le système est surchargé.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Lire le load average avec
uptimeet/proc/loadavg - Interpréter les 3 valeurs par rapport au nombre de cœurs CPU
- Distinguer surcharge CPU, surcharge I/O et saturation mémoire
- Diagnostiquer en temps réel avec
vmstat,topet/proc/pressure - Identifier les processus responsables de la surcharge
- Mettre en place une alerte simple en script
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »La vérification de la charge système intervient dans de nombreuses situations :
- Un serveur web répond lentement, vous devez déterminer rapidement si c'est un problème CPU, mémoire ou disque
- Après un déploiement, vous vérifiez que l'application ne sature pas les ressources
- Une alerte monitoring signale un load average élevé, vous devez qualifier la nature du problème
- Vous préparez un dimensionnement : combien de cœurs et de RAM sont réellement utilisés ?
- En entretien ou en examen, on vous demande de diagnostiquer un serveur lent, la charge système est le premier réflexe
Le load average, uptime
Section intitulée « Le load average, uptime »Lire la charge en un coup d'œil
Section intitulée « Lire la charge en un coup d'œil »uptime 08:13:36 up 14 days, 22:25, 4 users, load average: 0,50, 0,53, 0,41Les trois valeurs sont la charge moyenne sur 1 minute, 5 minutes et 15 minutes.
Lire depuis /proc/loadavg
Section intitulée « Lire depuis /proc/loadavg »uptime reformate en réalité un fichier que le noyau tient à jour en
permanence : /proc/loadavg. Le lire directement est utile en script, car
les deux dernières colonnes que uptime masque donnent des informations
supplémentaires, notamment le nombre de processus actuellement exécutables. La
première valeur reste le load average à 1 minute, exactement comme dans
uptime.
cat /proc/loadavg0.50 0.53 0.41 1/2509 2953827| Valeur | Signification |
|---|---|
0.50 | Load average 1 minute |
0.53 | Load average 5 minutes |
0.41 | Load average 15 minutes |
1/2509 | 1 processus en cours d'exécution sur 2509 existants |
2953827 | Dernier PID attribué |
Interpréter le load average
Section intitulée « Interpréter le load average »Le load average représente le nombre moyen de processus qui sont soit en cours d'exécution (CPU), soit en attente d'I/O (disque, réseau). Pour l'interpréter, il faut le rapporter au nombre de cœurs :
nproc16| Load average | Cœurs | Ratio | Interprétation |
|---|---|---|---|
| 0,50 | 16 | 0,03 | Système très peu chargé |
| 8,00 | 16 | 0,50 | Charge modérée (50 %) |
| 16,00 | 16 | 1,00 | Tous les cœurs occupés, seuil critique |
| 32,00 | 16 | 2,00 | File d'attente, processus ralentis |
Tendance : ce que révèle l'écart entre les 3 valeurs
Section intitulée « Tendance : ce que révèle l'écart entre les 3 valeurs »Une seule valeur de load ne dit rien de la direction. La force des trois mesures (1, 5 et 15 minutes) est de montrer si la charge monte ou descend : il suffit de comparer leur ordre de grandeur. Lisez-les de gauche à droite, du plus récent au plus ancien. Ce réflexe évite une erreur classique en astreinte, paniquer sur un load à 1 minute élevé alors que les valeurs à 5 et 15 minutes montrent un pic déjà en train de retomber.
| Pattern | Signification |
|---|---|
| 1min > 5min > 15min | La charge monte, quelque chose vient de démarrer |
| 1min < 5min < 15min | La charge descend, le pic est passé |
| Les 3 valeurs proches | Charge stable depuis 15 minutes |
| 1min très élevé, 15min normal | Pic ponctuel, probablement un batch ou un déploiement |
Charge CPU ou charge I/O ?
Section intitulée « Charge CPU ou charge I/O ? »Un load average élevé ne signifie pas forcément que le CPU est surchargé. Les processus en attente d'I/O disque comptent aussi. Pour distinguer :
Avec vmstat
Section intitulée « Avec vmstat »vmstat 1 5procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu------- r b swpd free buff cache si so bi bo in cs us sy id wa st gu 0 0 272128 7061744 4444732 21433220 0 1 61 561 15162 23 4 2 94 0 0 0 0 0 272128 7061384 4444732 21433280 0 0 0 0 2274 3284 1 1 99 0 0 0 0 0 272128 7055740 4444732 21433296 0 0 0 136 2615 17379 1 1 98 0 0 0| Colonne | Signification | Ce qu'il faut regarder |
|---|---|---|
r | Processus en cours (run queue) | Si r > nproc → CPU saturé |
b | Processus bloqués sur I/O | Si b > 0 régulièrement → problème disque |
us | % CPU utilisateur | Travail applicatif |
sy | % CPU système | Travail noyau |
id | % CPU idle | Temps libre |
wa | % CPU en attente I/O | Le signal clé : wa élevé = goulot disque |
si/so | Swap in / Swap out | Si > 0 → mémoire insuffisante |
Avec top
Section intitulée « Avec top »top -bn1 | head -5top - 08:13:38 up 14 days, 22:26, 4 users, load average: 0,50, 0,53, 0,41Tasks: 472 total, 1 running, 471 sleeping, 0 stopped, 0 zombie%Cpu(s): 1,1 us, 1,1 sy, 0,0 ni, 97,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 stMiB Mem : 47953,2 total, 6890,4 free, 16420,6 used, 25271,6 buff/cacheMiB Swap: 4096,0 total, 3830,2 free, 265,8 used. 31532,6 avail MemLa ligne %Cpu(s) donne la répartition en un coup d'œil : id élevé = système tranquille, wa élevé = problème I/O.
Identifier les processus gourmands
Section intitulée « Identifier les processus gourmands »# Par CPUps aux --sort=-%cpu | head -10
# Par mémoireps aux --sort=-%mem | head -10Dans top, appuyez sur P pour trier par CPU ou M pour trier par mémoire.
Vérifier la mémoire et le swap
Section intitulée « Vérifier la mémoire et le swap »free -h total used free shared buff/cache availableMem: 46Gi 16Gi 6,6Gi 33Mi 24Gi 30GiSwap: 4,0Gi 265Mi 3,7Gi| Valeur | Ce qu'il faut regarder |
|---|---|
available | Mémoire réellement utilisable (inclut le cache récupérable) |
Swap used | Si > 0, le système a manqué de RAM à un moment |
Vérifier si l'OOM killer est intervenu
Section intitulée « Vérifier si l'OOM killer est intervenu »sudo dmesg | grep -i "out of memory"Si des lignes apparaissent, le système a dû tuer des processus par manque de mémoire, c'est un signal critique.
PSI, Pressure Stall Information (noyaux récents)
Section intitulée « PSI, Pressure Stall Information (noyaux récents) »Sur les noyaux Linux 4.20+, /proc/pressure/ donne un indicateur précis de la pression sur chaque ressource :
cat /proc/pressure/cpusome avg10=0.00 avg60=0.04 avg300=0.01 total=16325330830full avg10=0.00 avg60=0.00 avg300=0.00 total=0cat /proc/pressure/memorysome avg10=0.00 avg60=0.00 avg300=0.00 total=3943556full avg10=0.00 avg60=0.00 avg300=0.00 total=3814571cat /proc/pressure/iosome avg10=0.04 avg60=0.23 avg300=0.09 total=1144701447full avg10=0.03 avg60=0.21 avg300=0.09 total=1058047928| Fichier | some | full |
|---|---|---|
cpu | Au moins un processus attend du CPU | Présent depuis le noyau 5.13, mais reste proche de 0 par construction |
memory | Au moins un processus attend de la mémoire | Tous les processus attendent |
io | Au moins un processus attend une I/O | Tous les processus attendent |
La ligne full du fichier cpu existe bien sur les noyaux récents, l'exemple ci-dessus le montre avec total=0. Elle reste quasi nulle : un processus prêt à s'exécuter finit toujours par obtenir du CPU, la notion de blocage total y a donc peu de sens. Sur memory et io, en revanche, un full non négligeable signale que tout le système est à l'arrêt en attente de la ressource, c'est le signal le plus grave.
Les valeurs avg10, avg60, avg300 sont les moyennes sur 10, 60 et 300 secondes (en % du temps). Toute valeur > 5 % mérite investigation.
Diagnostic rapide, méthodologie
Section intitulée « Diagnostic rapide, méthodologie »-
Charge globale
Fenêtre de terminal uptimenprocCalculez le ratio load/nproc. Si > 1, continuez le diagnostic.
-
CPU ou I/O ?
Fenêtre de terminal vmstat 1 5Regardez
wa(I/O wait) etr(run queue). Siwa > 20 %→ problème disque. Sir > nproc→ CPU saturé. -
Mémoire
Fenêtre de terminal free -hSi
availableest très faible ouSwap usedest élevé → mémoire insuffisante. -
Identifier le coupable
Fenêtre de terminal ps aux --sort=-%cpu | head -5ps aux --sort=-%mem | head -5 -
Vérifier l'historique
Fenêtre de terminal sudo dmesg | grep -i "out of memory"journalctl --since "1 hour ago" -p err
Alerte simple en script
Section intitulée « Alerte simple en script »#!/bin/bash# Alerte si la charge dépasse le nombre de cœursLOAD=$(awk '{print $1}' /proc/loadavg)CPUS=$(nproc)
if (( $(echo "$LOAD > $CPUS" | bc -l) )); then echo "ALERTE : load $LOAD dépasse $CPUS cœurs" | \ mail -s "Charge élevée sur $(hostname)" admin@example.comfiPlanifiez ce script avec un timer systemd ou cron toutes les 5 minutes.
Dépannage
Section intitulée « Dépannage »Ce tableau relie chaque symptôme observable à sa cause la plus probable. Lisez
d'abord la colonne du milieu : les deux premières lignes affichent le même
symptôme apparent, un load élevé, mais renvoient à des causes opposées, le
disque dans un cas, le CPU dans l'autre. La ligne à ne pas manquer est la
dernière, load à 0 mais serveur lent : elle rappelle que le load average
ignore complètement la latence réseau et applicative.
| Symptôme | Cause probable | Solution |
|---|---|---|
| Load élevé, CPU idle élevé | Processus bloqués sur I/O disque | vmstat : vérifier wa et b, migrer sur SSD |
| Load élevé, wa faible, us élevé | Charge CPU réelle | Identifier le processus avec top (touche P) |
| Swap utilisé en permanence | RAM insuffisante | Ajouter de la RAM ou réduire le nombre de services |
| OOM killer dans dmesg | Mémoire épuisée, processus tués | Augmenter RAM, configurer les limites cgroups |
| Load à 0 mais serveur lent | Problème réseau ou applicatif | Vérifier ss -tulpn, les latences réseau |
| Load monte par pic régulier | Cron ou batch planifié | crontab -l, systemctl list-timers pour identifier |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Le load average = nombre moyen de processus en exécution ou en attente d'I/O, divisez-le par
nprocpour interpréter - Trois valeurs (1, 5, 15 min) donnent la tendance : en hausse, stable ou en baisse
wadans vmstat est le signal clé pour distinguer surcharge CPU et surcharge I/O disquefree -h: regardezavailable, pasfree, pour évaluer la marge mémoire restante- PSI (
/proc/pressure/) donne la pression réelle sur CPU, mémoire et I/O sur les noyaux récents - Un load > nproc n'est pas toujours un problème CPU, vérifiez toujours wa et swap avant de conclure
- En production, mettez en place une surveillance automatisée (Prometheus/Grafana) plutôt que des vérifications manuelles