Home / Linux / [MAJ] Utilisation de la commande TOP et notion de load average sous Linux.

[MAJ] Utilisation de la commande TOP et notion de load average sous Linux.

La commande top vous permet d’afficher des informations en continu sur l’activité du système. Elle permet surtout de suivre les ressources que les processus utilisent (quantité de RAM, pourcentage de CPU, la durée de ce processus depuis son démarrage). Nous aborderons aussi  la notion de load average (charge moyenne) du système.

Avant toute chose, ouvrez un terminal sous linux et taper la commande suivante pour connaitre le load average de votre serveur :

quicktutoriel#top

Voici le résultat de cette commande. Nous utiliserons cette copie d’écran comme base de notre tutoriel.

Première partie : uptime et load average

  • top – : rappel de la commande
  • 16 :12 :19 : heure de la machine
  • up 540 days : uptime de la machine c’est-à-dire le temps depuis lequel tourne la machine sans interruption. En cas de redémarrage, l’uptime est remis à zéro.
  • 1 user : nombre d’utilisateur actuel, ayant ouvert une session sur le serveur
  • load average 1.30, 1.77, 1.65 : Charge moyenne de la machine, nous allons nous attarder un peu plus sur ces valeurs que vous retrouver sur de nombreuses machines linux. Le load average est découpé en 3 parties : le premier est calculé sur la dernière minute, le second 5 minutes et le dernier 15 minutes, cela indique la charge moyenne de votre système.

Pour faire simple, le load average, c’est le nombre de processus en train d’utiliser le(s) processeur(s) ou en train d’attendre de pouvoir les utiliser. Que ce soit pour les 1,5 ou 15 minutes elles ont la même grandeur sauf que la durée est changée, ici pour mon exemple j’ai une moyenne de 1.30 processus qui ont utilisés le processeur pendant la dernière minute, 1.77 les 5 dernières minutes et 1.65 sur les 15 dernières minutes.

Une machine qui a une charge de plus de 1 par processeur (1 pour mono-processeur, 2 pour un bi-processeur, …) est considérée comme chargée.

La raison d’un load average élevé n’est pas forcément un manque de puissance de calcul, il peut par exemple y avoir beaucoup de processus en attente d’entrées/sorties (disque dur, CD, réseau, …) sans que le processeur ne soit réellement sollicité. Pour y voir plus clair, le programme top indique également le taux d’utilisation des CPU sur la troisième ligne de sa sortie ce qui permet de déterminer en partie où se situe le goulot de performances.

Vous avez plusieurs commandes pour connaître le nombre de processeurs sous linux :

quicktutoriel# dmesg |grep CPU

Comme vous pouvez le voir, ici nous avons 8 CPU.

quicktutoriel#cat /proc/cpuinfo

Les résultats de cette commande sont plus détaillés. Sur la ligne Processor nous pouvons voir 7, donc comme la numérotation commence à 0 nous  avons donc 8 CPU logique. De plus si vous regarder en détai la ligne CPU Cores, celle-ci nous donne le nombre de CPU physique, ici 4.

Seconde partie : Tâches

  • Task 125 total : Nombre de processus au total
  • 2 running : Nombre de processus actifs
  • 115 sleeping : Nombre de processus endormis, Un processus endormi ne fait rien. Il attend une condition pour redevenir exécutable ou actif. Il peut se mettre lui-même en sommeil. Un programme par exemple peut attendre quelques secondes avant de poursuivre son exécution pour laisser le temps à l’utilisateur de lire un message affiché. Mais il peut aussi être mis en sommeil par le noyau en attendant que ce qu’il demande soit disponible. Pour illustrer ceci, on peut observer un programme de chat (IRC) permettant de dialoguer sur Internet avec d’autres personnes. Tant que personne n’écrit rien, ce programme n’a rien à faire. Il va tout d’abord dire au système qu’il souhaite lire les informations qui arrivent d’Internet. Si rien n’est présent, il est mis dans un état endormi. Il sera alors réveillé dès que quelqu’un écrit un message afin que le processus puisse le traiter.
  • 0 stopped : Nombre de processus arrêtés
  • 8 zombie : Nombre de processus zombies, Un tel processus est en réalité terminé. Il a fini son exécution et n’a donc plus de raisons d’exister. Seulement pour diverses raisons possibles, son père n’a pas été informé de ceci. Et tout processus doit prendre connaissance de la fin de ceux qu’il a lancés (ses fils). Le système conserve donc les informations correspondant au processus enfant afin que son parent puisse voir qu’il a fini son exécution.

Troisième partie : Processeurs

  • 9.4%us : Temps CPU utilisé par les processus de l’utilisateur
  • 1.9%sy : Temps CPU utilisé par le noyau et ses processus
  • 0.0%ni : Temps CPU utilisé par les processus de l’utilisateur qui ont été « nicés » (« nice » signifie gentil en anglais, un processus gentil laisse passer en priorité les autres processus, plus la priorité est forte et positive et plus le processus est gentil pour les autres processus).
  • 88.6%id : Temps CPU non sollicité
  • 0.1%wa : Temps CPU pour attente I/O, si ce chiffre est important en permanence, comme 20 ou plus par exemple cela veut dire que votre ordinateur à des instructions en attentes il est probable que votre ordinateur commence à ramer pour les traitements que vous lui demander. Cela peut être aussi  une tâche mal conçue qui consomme énormément de CPU. Cette valeur est très importante et doit être proche de 0 le plus souvent.
  • 0.0%hi : Temps CPU utilisé pour les interruptions matérielles
  • 0.0%si : Temps CPU utilisé pour les interruptions logicielles
  • 0.0%st : Temps CPU « volé » de cette machine virtuelle par l’hyperviseur pour d’autres tâches (utilisation pour une autre VM par exemple)

Quatrième partie : mémoire physique et virtuelle

  • Mem : Mémoire physique (totale, utilisée, libre et tampons)
  • Swap : Mémoire virtuelle (totale, utilisée, libre et en cache), La mémoire swap est mécanisme de mémoire virtuelle. Le but de ce mécanisme est de permettre à des applications d’utiliser plus de mémoire vive que n’en contient physiquement la machine. Pour réaliser cela, l’astuce consiste à utiliser un support de stockage de masse (disque dur) pour simuler la mémoire.

Très grossièrement, lorsqu’une application demande plus de mémoire qu’il n’en existe de disponible, le système détermine quelle application utilise la mémoire à un instant donné. Plutôt que d’allouer des morceaux de mémoire à toutes les applications, il met alors en veille certaines d’entre elles et copie sur le disque une image de la mémoire qu’elles utilisent. Il libère ainsi des morceaux de mémoire vive pour l’application gourmande.

Comme vous pouvez le constater notre serveur, n’utilise pas de mémoire SWAP, par contre pratiquement toute sa mémoire physique est utilisée.

Cinquième partie : détails des processus

  • PID      : Le PID du processus, Il s’agit d’une valeur numéraire qui spécifie quels processus sont en cours simultanément dans un ordinateur multitâche.
  • USER  : L’utilisateur qui exécute ce processus
  • PR        : La priorité de la tâche. (Plus le chiffre est petit plus la tâche est prioritaire).
  • NI         : Le nice de la tâche.
  • VIRT   : Taille virtuelle d’un processus, c’est la somme de la mémoire qu’il utilise réellement en mémoire (pas qu’en mémoire vive), toute mémoire : vidéo (serveur X), bibliothèques, sémaphores … C’est la quantité de mémoire dont le processus a accès immédiatement
  • RES     : Quantité de mémoire physique occupée par le processus
  • SHR    : Indique quelle quantité de la colonne VIRT est réellement partagée
  • S           : Statut du processus. Les valeurs possibles sont : S (sleeping), D (uninterruptible sleep), R (running), Z (zombie), ou T (stopped or traced), peut être précédé par < (negative nice value), N (positive nice value), ou W (swapped out).
  • %CPU : Charge CPU
  • %MEM: Charge mémoire
  • TIME+: Temps total d’utilisation du processeur depuis le lancement du processus
  • COMMAND : Nom du processus
Astuce !!! Pour sortir de la commande top, taper q.

That’s All.

  

3 Potins

  1. Bonjour ,
    J’ai ça quand je tape top
    mt22-/var/log> top
    top – 17:32:31 up 173 days, 23:21, 23 users, load average: 12.03, 13.57, 14.35
    Tasks: 1547 total, 5 running, 1541 sleeping, 0 stopped, 1 zombie
    Cpu(s): 61.6%us, 3.6%sy, 0.0%ni, 34.5%id, 0.1%wa, 0.0%hi, 0.2%si, 0.0%st
    Mem: 198297036k total, 196093912k used, 2203124k free, 887932k buffers
    Swap: 67108852k total, 16428680k used, 50680172k free, 8360868k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    20307 mt22 20 0 14.0g 3.8g 7080 S 1145.8 2.0 4453:07 java

    mt22-/mt22> l | grep 20307
    mt22 20307 1 99 00:25 ? 3-00:16:10 /etc/alternatives/jre_1.7.0/bin/java -Djava.util.logging.config.file=/mt22/tomweb/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512M -Xmx4096M -XX:MaxPermSize=512M -Dcom.hraccess.dir.home=/mt22/tomdirs/tomweb -Djsse.enableSNIExtension=false -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/mt22/tomweb/endorsed -classpath /mt22/tomweb/bin/bootstrap.jar:/mt22/tomweb/bin/tomcat-juli.jar -Dcatalina.base=/mt22/tomweb -Dcatalina.home=/mt22/tomweb -Djava.io.tmpdir=/mt22/tomweb/temp org.apache.catalina.startup.Bootstrap start

    Je n’ai pas su quel est le problème.
    Avez-vous une idée svp?

  2. Les Jardins de Laurent

    Merci beaucoup pour ce tuto très utile ! ;-)

  3. Je préfere quand meme la commande htop
    cf http://fr.wikipedia.org/wiki/Fichier:Htop.png

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

4b0c4187a8da27687d6413590f6def0axxxxxx