storiq logo

La traînée de poudre

Le blog StorIQ

 

Mardi, 05 novembre 2013

Comprendre la charge système sous Linux (et Unix)

Administrateurs système, vous connaissez sans doute ces chiffres mystérieux qui apparaissent dans la sortie des commandes top, procinfo, uptime, w et tant d’autres, par exemple:

    [~]$ uptime 
     15:08:24 up 5 days,  4:17,  2 users,  load average: 0.08, 0.24, 0.29

Mais à quoi sert donc cette mystérieuse “load average”, charge système? Et pourquoi trois valeurs?

Une, cinq et quinze minutes

Les trois valeurs correspondent à la charge système moyenne sur les 1, 5 et 15 dernières minutes, telle que mesurée par le noyau. Notons au passage que les chiffres sont dans l’ordre inverse par rapport au temps… Si on veut déterminer la tendance, il faut donc considérer les chiffres à l’envers: dans l’exemple ci-dessus, la charge décroît au fil du temps, de droite à gauche.

Processeur, entrées-sorties, interruptions

Ceci ne nous dit pas ce qu’est la charge système. Elle est une mesure du nombre de processus actifs sur le système, et ajoute le nombre de processus en attente; l’unité 1.00 représente l’utilisation à 100% d’un processeur (ou coeur).

Du fait de cette double mesure, la charge système évolue en fonction à la fois de la charge du processeur, des entrées-sorties et des interruptions matérielles.

Si on ne considère que la charge processeur, un processeur utilisé à 100% pendant une minute se traduira par une charge de 1 pour la dernière minute (sous Linux; sous Solaris, la valeur est divisée par le nombre de processeurs ou coeurs); hors de toute autre activité, on aura donc une charge de 0.20 sur les 5 dernières minutes, et de 0.06 sur le dernier quart d’heure.

Charge et réactivité

Le lien entre la charge système et la réactivité du système est indirect: selon le type de système d’exploitation, une charge processeur maximale, produite par exemple par un calcul en arrière-plan, peut ne pas induire de ralentissement sensible pour les autres processus; a contrario, une charge système élevée induite par des processus nombreux en attente d’entrées-sorties (par exemple de très nombreux clients NFS accédant à de multiples fichiers) peut provoquer l’apparition de temps de réponses très importants.

Utiliser la charge

On considère généralement une valeur “élevée” si elle est très supérieure au nombre de processeurs; ce qui reste subjectif, une machine pouvant fonctionner normalement avec une charge système de 100 ou plus : la commande cat /dev/zero > /dev/null chargera un processeur à 100%, mais n’aura pas d’impact sur la réactivité parce qu’aucune ressource limitée n’est en jeu.

La charge système est un signal d’alarme; apprenez à connaître les plages de charge normale pour votre système, et recherchez les problèmes en cas de dérive importante.

posté à: 15:41 permalink