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 »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 — les 3 valeurs racontent une histoire
Section intitulée « Tendance — les 3 valeurs racontent une histoire »| 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 | — (pas de full pour CPU) |
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 |
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 »| 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 |
À 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