Linux

Calcul de la charge CPU réelle

Vous savez tous ce que représente la charge (load average) d’une machine Unix ? Non ? Bon, alors un petit rappel : c’est le nombre moyen de processus en cours d’exécution ou en attente d’exécution. Vous êtes probablement persuadé que sur une machine mono-processeur et mono-core, une charge supérieure à 1 indique que la CPU est totalement utilisée… de même pour une charge supérieur à 4 sur un dual-core hyper-threadé… et bien non, pas forcément. Prenons l’exemple d’un serveur « dédié » à bas prix chez un hébergeur français bien connu, avec un disque monté en iSCSI : De manière générale, les processus passent énormément de temps à attendre (car les accès disques sont extrêêêêêêmement lents). Techniquement ils font donc monter le load-average, puisqu’en attente d’exécution, même si la ou les CPU ne font rien ! Un load-average haut ne signifie donc pas nécessairement que la machine est au taquet ! C’est cependant un indicateur intéressant, et qui révèle souvent un problème ou une saturation des ressources.

Vous savez tous ce que représente la charge (load average) d’une machine Unix ? Non ? Bon, alors un petit rappel : c’est le nombre moyen de processus en cours d’exécution ou en attente d’exécution. Vous êtes probablement persuadé que sur une machine mono-processeur et mono-core, une charge supérieure à 1 indique que la CPU est totalement utilisée… de même pour une charge supérieur à 4 sur un dual-core hyper-threadé… et bien non, pas forcément. Prenons l’exemple d’un serveur « dédié » à bas prix chez un hébergeur français bien connu, avec un disque monté en iSCSI : De manière générale, les processus passent énormément de temps à attendre (car les accès disques sont extrêêêêêêmement lents). Techniquement ils font donc monter le load-average, puisqu’en attente d’exécution, même si la ou les CPU ne font rien ! Un load-average haut ne signifie donc pas nécessairement que la machine est au taquet ! C’est cependant un indicateur intéressant, et qui révèle souvent un problème ou une saturation des ressources.
Mais comment voir la charge CPU réelle alors, et monitorer correctement si les CPU sont surchargés ?

En utilisant /proc/stat, qui nous indique le temps total (en jiffies) passé par les processus en exécution (user, nice, system, etc…). En faisant une différence des valeurs divisé par le temps entre les deux mesures, on obtient la charge CPU consommé dans les différents « états ». Si on ajoute user+nice+system de tous les processeurs/cores divisés par le nombre de processeurs/cores, on obtient la charge CPU réelle de la machine : Si on fleurte avec les 100%, là on est réellement au taquet de la CPU :-)

Voici un petit script bash indiquant la charge CPU totale réelle de la machine, à un instant t :

#!/bin/bash

TIMER=1

function usageCPU {
  read cpu user nice system reste < <(grep "^cpu " /proc/stat);
  echo "$user+$nice+$system" | bc
}

NB_CPU=$(grep "^processor" /proc/cpuinfo | wc -l)

while true;
do
  MESURE_1=$(usageCPU)
  sleep $TIMER
  MESURE_2=$(usageCPU)
  CPU_USAGE=$(echo "scale=2; ($MESURE_2-$MESURE_1)/($TIMER*$NB_CPU)" | bc)
  echo "Total CPU usage = $CPU_USAGE%"
done

Dans le même style, il est intéressant de monitorer le 5ème champ de /proc/stat (« iowait« ), pour déceler un goulot d’étranglement sur les accès aux disques, par exemple.

Tags: , ,

Mercredi 30 décembre 2009 Linux Commentaires fermés

Participez à sysadmin.fr !

Vous êtes sysadmin ? passionné ? Vous souhaitez faire part de vos expérience, et faire vivre ce blog ? N’hésitez pas à me contacter pour obtenir un compte : fabien (a) sysadmin (point) fr

Tags:

Dimanche 27 décembre 2009 Linux, Logiciels Libres, Réseaux, Sécurité Commentaires fermés

Mail temporaire anonyme

Joyeux Noël ! Après x mois (un an…) d’absence et de lâche abandon de ce site ;-) , je voudrais faire aujourd’hui une petite pub pour un projet fraichement arrivé sur l’Internet : Mail-Temporaire. Ce service vous permet de créer une adresse e-mail temporaire, valable pendant quelques minutes/jours/heures, selon votre besoin. Concrètement comment ça fonctionne ? Tous les mails envoyés vers cette adresse temporaire sont reroutés vers votre adresse e-mail réelle. Une fois le temps de validité expiré, l’adresse est détruite et vous ne pourrez plus être contacté à cette adresse par la suite. Idéal pour s’inscrire sur des sites « douteux », ou bien commander en ligne sans risquer de se faire spammer par la suite. Le service est bien sûr entièrement gratuit.

Concrètement, Mail-Temporaire comment ça marche ? Du Linux (bien sûr), du Postfix tuné, du MySQL tuné, des scripts PHP et pas mal de scripts bash… secouez le tout, et voilà :-)

Tags: ,

Dimanche 27 décembre 2009 Linux, Sécurité Commentaires fermés