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.
Sommaire de l'article
La commande TOP
La commande TOP est une des premières commandes à connaitre et savoir utiliser lorsqu’on est sur Linux. Elle permet de surveiller son système et d’identifier des dysfonctionnement. Lorsqu’on vient du monde de Windows, on peut la comparer au gestionnaire de tâches. Si vous n’arrivez pas à réaliser un diagnostic sur un problème, vous pouvez contacter un informaticien qui vous aidera et vous indiquera la marche à suivre. En attendant, vous pouvez suivre nos conseils.
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.
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. Le redémarrage de la machine remet à zéro l’uptime.
- 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.
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.
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
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.
Les 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.
Utilisation du Processeur
- 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)
Utilisation de 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.
Notre serveur n’utilise pas de mémoire SWAP, par contre toute sa mémoire physique est pratiquement utilisée.
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
Liste de raccourcis pratique pour le mode interactif
Le mode interactif est le mode par défaut de la commande TOP. L’affichage se met à jour toutes les 3 secondes. Voici une liste de raccourcis que vous pouvez utiliser sur cet écran pour interagir sur les résultats affichés.
Les équivalents de la commande TOP
La commande TOP a fait beaucoup d’émules. Certains sont inutiles mais d’autres apportes des fonctionnalités intéressantes notamment dans la présentation des informations sous forme graphique par exemple. Vous trouverez ci-dessous une liste d’utilitaires similaire à la commande TOP.