Comment lisez-vous le load average, et que signifie-t-il vraiment ?

Questions d’entrevue Linux

Intermédiaireprocessusdiagnosticperformance

Ce que les trois nombres mesurent

uptime et top affichent trois moyennes : 1, 5 et 15 minutes. Chaque valeur est une moyenne du nombre de tâches qui sont soit runnable (R), soit en attente d’I/O non interruptible (D). Ce n’est pas un pourcentage, ce n’est pas « à quel point le CPU est occupé », et ce n’est pas comparable d’une machine à l’autre sans connaître le nombre de cœurs.

Sur 8 cœurs, un load de 8 veut dire : en moyenne, assez de travail pour occuper toutes les files. Un load de 16 veut dire une file d’attente de la taille du parc. Un load de 1 sur 64 cœurs est du calme. Le dénominateur, c’est nproc, pas 1.

Les trois fenêtres servent à voir la tendance. 12 / 4 / 1 : ça vient de monter, l’incident est jeune. 12 / 11 / 10 : ça dure, ce n’est plus un pic. 2 / 8 / 14 : ça redescend, le pic est derrière.

Pourquoi « load haut » n’est pas un diagnostic

Deux machines à load 20 n’ont rien en commun.

Saturation CPU. top montre beaucoup de R, %Cpu proche de 100 %, peu de wa. Les processus utiles se marchent dessus. On cherche qui : ps trié par CPU, un régulateur qui a trop de workers, une regex catastrophique.

File d’I/O. Beaucoup de D, %wa élevé, disque saturé (iostat -xz 1). Le load grimpe parce que le noyau compte les tâches qui attendent le stockage. Ajouter des cœurs ne change rien. C’est un disque plein, un RAID dégradé, un NFS qui ne répond plus, un fsync de base trop fréquent.

La confusion classique : une machine idle en CPU avec un load à 40. Le débutant « scale le CPU ». Le bon réflexe est vmstat 1 : colonnes r (run queue) et b (blocked). b élevé + wa = I/O. r élevé + idle bas = CPU.

Ce qu’on dit en entretien

Vous donnez la définition, puis le protocole de lecture :

  1. Nombre de cœurs.
  2. Tendance 1 / 5 / 15.
  3. Tranche CPU contre I/O (top, vmstat, éventuellement iostat).
  4. Identification du responsable (ps, pidstat, le service, le mount).

Sans cette tranche, le load average est un thermomètre dont on ignore s’il mesure la fièvre ou l’humidité.

La relance probable

« Un load de 1,000 sur un serveur, c’est grave ? »

Grave par rapport à quoi. 1 000 tâches en D sur un filer mort, oui : plus rien n’avance. 1 000 sur une machine de 128 cœurs qui compile, c’est une file, pas forcément une panne. La gravité se lit dans la latence utilisateur et dans b / wa, pas dans le chiffre seul.

« Le load peut-il être bas et la machine quand même inutilisable ? »

Oui. Un seul processus en D qui tient un verrou global, un réseau saturé que le load ne voit pas, une table de file descriptors saturée. Le load est un signal d’encombrement de l’ordonnanceur, pas un résumé de la santé. C’est pour ça qu’on le lit tôt, et qu’on ne s’arrête jamais là.

Toutes les questions Linux