Menu Fermer

Qu’est-ce que le load average sur Linux

Sur Linux, le load average (abrégé en loadavg) est une mesure de la charge de travail du système.
C’est un indicateur important qui permet de vérifier si un serveur est en surcharge.
Il faut donc régulièrement vérifier le load average surtout si le PC ou serveur ralentit ou freez.

Dans ce tutoriel, je vous explique ce qu’est le load average afin de bien comprendre les implications.

Qu'est-ce que le load average sur Linux

Qu’est-ce que Load average : Load average vs charge CPU

Dans les systèmes Unix, Le load average désigne la moyenne de la charge système.
Cela mesure la quantité de travail effectué par le système pendant une période définit.
Elle vise à représenter le système “demande de ressources” comme un seul nombre.
Le noyau Linux le recalcule toutes les 5 secondes.

Le load average n’a rien à voir avec la charge processeur (CPU) qui est une mesure propre.
Il mesure plutôt la file d’attente d’une ressource système.
Cela inclut ainsi les indicateurs matériels suivants (CPU, RAM, Réseau, Disques, Nombre de processus, etc…).

Ci-dessous, un load average important à 100 alors que l’utilisation CPU est 0,7%.
La surcharge de travail n’est donc pas provoqué par une sur-utilisation du processeur mais probablement un autre composant (disque, réseau, ….).

Load average élevé à 100 sur Linux

A l’inverse, le CPU est à 100% alors l’uptime ne dépasse pas 0,5.

Le CPU est à 100% alors l'uptime ne dépasse pas 0,5

Lors d’une attaque DoS de type TCP SYN, il est tout à fait possible d’avoir un load average important car la couche réseau sature sans qu’aucun processus ne sature le système.

Cela vient du fait que l’unité de métrique de charge système est “Nombre de processus / threads”. L’état exécutable signifie «non bloqué par rien», prêt à courir sur la CPU. Le thread est soit en cours d’exécution sur la CPU ou en attente dans la CPU RunQueue pour que le planificateur du système d’exploitation soit mis sur la CPU.

Ainsi, la mesure varie aussi selon le nombre de processeurs ou de coeurs puisque l’on peut avoir plusieurs threads en cours d’exécution.

Par exemple, un load average de 1 sur un monoprocesseur signifie que le processeur est pleinement en travail.
Un processus occupe le processeur.
Alors que pour un processeur à 2 coeurs, il est occupé à 50%.
Ainsi pour un load de 2, un monoprocesseur est surchargé mais pas un dual-core qui est à 100%. La charge système sur un processeur à trois coeurs est à ~66%.

Selon le nombre de coeurs ou processus, un load average élevé ne signifie pas forcément que votre système sature et que le serveur ralentit ou ne peut répondre à la surcharge de travail.

Ainsi sur ce serveur quad-core, un seul processus gourmand ne fait pas monter le load average.

Load average important et forte utilisation CPU

Par contre si on lance plusieurs à la fois, la charge de travail augmente et donc le load average aussi.

Load average important et forte utilisation CPU

Comment afficher le load average en ligne de commandes

Plusieurs commandes comme top ou uptime affichent le load average.
Il est aussi possible de l’afficher de cette manière :

cat /proc/loadavg
Afficher le load average en ligne de commandes

top affiche le load average en haut à droite.

Le load average dans top

Ainsi, la plupart des utilitaires de mesures de la charge système (atop, htop, iotop, vmstat, …) affichent le load average et toujours de la même manière.

Comprendre et lire le load average

Voici quelques explications afin de savoir lire le load average.

Trois intervalles sont données :

  • En premier le load average sur 1 minute
  • Puis le load average sur 5 minutes
  • Enfin sur 15 minutes
Comprendre et lire le load average

Cela permet de déterminer si la demande de charge système augmente sur la période ou diminue au fil du temps.
Il est donc important de garder un oeil dessus pour s’assurer de l’état général du système.

Mesurer la surcharge du système

Pour mieux comprendre la surcharge du système, vous pouvez convertir le load average en pourcentage selon le nombre de coeurs.
Cela permet d’assurer si le système est saturé ou non.

Pour convertir le load average sur 1 minute en pourcentage, utilisez la formule suivante :

(Load Average / nombre processeurs) x 100

Par exemple sur un PC monoprocesseur avec un load average de 6, cela signifie que la charge système est à 600%.

(6.00 / 1) x 100

Ainsi, le système est surchargé de 500% supérieur à la capacité qu’elle peut gérer.

Second exemple avec un serveur à 12 processeurs et un load average de 6.
Au final, la charge de travail est ainsi de 50%.

(6.00 / 12) x 100 = 50%

Trouver la source d’un load average élevé

Un load average important ne veut pas forcément dire que votre processeur n’est pas assez rapide.
Cela indique simplement que le système est surchargé.
Cela peut alors ralentir le PC ou serveur et parfois même provoquer des freez.

Pour trouver la source, suivez les conseils de ce tutoriel :