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

Commande TOP sous Linux : Surveillance et analyse du load average

Dans l’univers de la surveillance système Linux, la commande top est un outil incontournable pour analyser en temps réel l’utilisation des ressources d’un serveur. Que vous soyez administrateur système ou simple utilisateur curieux, comprendre les informations affichées par cette commande vous permettra d’optimiser les performances de votre machine. Un des indicateurs clés à surveiller est le load average, qui reflète la charge globale du système. Dans cet article, nous allons explorer en détail l’usage de la commande top, son interprétation et son rôle essentiel dans la gestion des performances sous Linux.

Comprendre la commande TOP sous Linux

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.

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

quicktutoriel#top

La commande TOP (load average) 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.

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

Interpréter le load average

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.

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. Enfin si vous souhaitez en savoir plus sur cette commande je vous conseille de lire documentation officielle de la commande top.

Connaître le nombre de processeurs sous linux

quicktutoriel# dmesg |grep CPU

Connaître le nombre de processeurs sous linux

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

quicktutoriel#cat /proc/cpuinfo

Connaître le nombre de processeurs sous linux

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

Les tâches avec la commande TOP

  • 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

Utilisation du Processeur sous Linux avec la commande TOP

  • 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

Utilisation de mémoire physique et virtuelle avec la commande TOP

  • 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.

Cette gestion efficace évite les aléas du Plinko en ligne, où les ressources pourraient se retrouver dispersées de manière imprévisible.

Détails des processus

Détails des processus avec la commande TOP

  • 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.

Liste de raccourcis pratique pour le mode interactif de la commande top sous Linux

Astuce !!! Pour sortir de la commande top, taper q.

Surveiller et gérer les processus consommateurs sous Linux avec TOP

Lorsque votre serveur ou votre machine Linux semble ralentie, il est essentiel d’identifier les processus consommateurs de ressources. La commande top est un outil puissant qui affiche en temps réel l’activité du système.

Exécuter la commande top en CLI, vous verrez apparaître une liste des processus en cours d’exécution, avec plusieurs colonnes importantes :

  • PID : Identifiant du processus
  • USER : Utilisateur exécutant le processus
  • %CPU : Pourcentage d’utilisation du processeur
  • %MEM : Pourcentage d’utilisation de la mémoire
  • COMMAND : Nom de la commande associée au processus

Trier les processus par consommation CPU ou RAM

Dans TOP, utilisez les touches suivantes pour trier les processus :

  • P → Trier par utilisation CPU
  • M → Trier par utilisation mémoire

Trier les processus par consommation CPU ou RAM avec la commande TOP

🎯 Astuce : Si un processus utilise un pourcentage élevé de CPU ou de RAM de manière persistante, il pourrait ralentir votre système.

Terminer un processus avec KILL

Si un processus utilise trop de ressources et impacte les performances du système, vous pouvez le stopper avec la commande kill.

Étape 1 : Identifier le PID

Dans top, repérez le PID du processus problématique.

Étape 2 : Envoyer un signal kill

Utilisez la commande suivante :

kill PID
Remplacez PID par l’identifiant du processus.

Si le processus ne se ferme pas, utilisez le signal -9 (SIGKILL) pour le forcer :

kill -9 PID

Ajuster la priorité d’un processus avec renice

Au lieu de tuer un processus, vous pouvez modifier sa priorité pour réduire son impact sur le système avec la commande renice.

Étape 1 : Vérifier la priorité actuelle (nice)

Dans top, la colonne NI (Nice value) indique la priorité du processus. Les valeurs vont de -20 (priorité haute) à 19 (priorité basse).

Étape 2 : Modifier la priorité avec renice

renice PRIORITÉ -p PID
Exemple : pour réduire la priorité d’un processus ayant le PID 1234 :
renice 10 -p 1234

Si vous souhaitez approfondir vos connaissances, ce guide avancé sur la gestion des processus sous Linux vous expliquera comment surveiller, prioriser et optimiser l’exécution des tâches système pour améliorer les performances de votre serveur.

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.

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.

Signature manuelle Guillaume

1 potin

  1. Merci pour cet article détaillé sur la commande TOP ! J’ai toujours trouvé le load average un peu flou, mais vos explications claires et les exemples pratiques m’ont vraiment aidé à mieux comprendre comment l’analyser. Hâte de mettre ces conseils en pratique !

Laisser un commentaire

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