DevOps & Infrastructure

htop et top sur Linux : comprendre chaque métrique affichée

5 juillet 2026 Mehdi 06:32
htop et top sur Linux : comprendre chaque métrique affichée

Vous ouvrez htop et vous voyez défiler des colonnes, des chiffres, des lettres cryptiques. Vous savez que quelque chose se passe, mais vous ne savez pas exactement quoi. Ce guide décrypte chaque élément affiché par htop et top sur Linux, sans rien laisser dans l’ombre.

Comprendre les métriques htop et top : par où commencer

La commande htop lit ses données directement dans le pseudo-système de fichiers /proc. Ce n’est pas de la magie : c’est le noyau Linux qui expose ses informations internes sous forme de fichiers lisibles. htop, top, ps et les autres outils de monitoring font tous la même chose : parcourir /proc/<pid>/ pour chaque processus.

Commençons par le haut de l’interface, là où se concentrent les indicateurs système globaux.

Uptime et load average : ne pas confondre les deux

L’uptime

L’uptime indique depuis combien de temps le système tourne. La commande uptime lit le fichier /proc/uptime. Le premier nombre est le total de secondes depuis le démarrage. Le second est le temps passé en idle, et peut dépasser l’uptime sur les machines multicœurs car il additionne l’idle de chaque cœur.

Le load average : la métrique la plus mal comprise

Le load average affiche trois valeurs : la charge moyenne sur 1 minute, 5 minutes et 15 minutes. Ces valeurs viennent de /proc/loadavg.

Voici ce que beaucoup ignorent : un load average de 1.0 sur une machine à deux cœurs correspond à 50 % d’utilisation CPU, pas à 100 %. Le chiffre représente le nombre moyen de processus en état « running » ou en attente d’E/S disque ou réseau.

Autre point souvent raté : le calcul n’est pas une simple moyenne glissante. C’est une moyenne mobile exponentiellement amortie. La valeur sur 1 minute intègre 63 % de la charge de la dernière minute et 37 % de l’historique depuis le démarrage. Un load average élevé avec un CPU tranquille signale souvent des processus bloqués en attente d’I/O, pas un problème de CPU.

Pour mesurer l’utilisation CPU instantanée avec précision, utilisez mpstat (paquet sysstat) plutôt que de vous fier aux load averages.

Les processus et leurs états

PID et arborescence

Chaque processus reçoit un identifiant numérique unique, le PID. Le processus init ou systemd porte toujours le PID 1. Il est lancé au boot et devient l’ancêtre de tous les autres processus.

Quand vous lancez un programme depuis bash, voici ce qui se passe :

  • bash crée un processus enfant via fork
  • l’enfant charge le programme en mémoire via exec
  • bash attend la fin de l’enfant

Dans htop, appuyez sur F5 pour afficher l’arborescence des processus. Vous verrez clairement les relations parent/enfant.

Les états des processus

La colonne S dans htop indique l’état courant d’un processus. Voici ce que chaque lettre signifie :

  • R : running, le processus tourne sur le CPU ou attend son tour dans la file
  • S : interruptible sleep, le processus attend un événement et peut recevoir des signaux
  • D : uninterruptible sleep, généralement en attente d’I/O disque ou réseau, ne peut pas être interrompu
  • Z : zombie, le processus est terminé mais n’a pas encore été nettoyé par son parent
  • T : stoppé par un signal de contrôle de job
  • t : stoppé par un debugger

L’état D est celui qui doit vous alerter : un processus bloqué en D pendant longtemps indique souvent un problème d’I/O ou de périphérique.

Threads et threads noyau

Dans htop, appuyez sur Shift+H pour afficher les threads utilisateur. Shift+K affiche les threads noyau. L’interface indique par exemple Tasks: 23, 10 thr quand les threads sont visibles.

Utilisateurs et propriété des processus

Chaque processus appartient à un utilisateur, identifié par un UID numérique. htop lit cet UID dans /proc/<pid>/status et le résout en nom via /etc/passwd.

Un détail important pour la sécurité : certains exécutables portent le bit setuid (le s dans les permissions). Cela signifie que le processus tourne avec les droits du propriétaire du fichier, pas de l’utilisateur qui l’a lancé. C’est le cas de /usr/bin/passwd qui doit écrire dans /etc/shadow en tant que root.

Repérez les binaires setuid avec : find /bin -user root -perm -u+s

Signaux : interagir avec les processus

Depuis htop, vous pouvez envoyer un signal à un processus via F9. Un signal est simplement un entier. Les plus utiles :

  • SIGTERM (15) : demande au processus de se terminer proprement
  • SIGKILL (9) : tue le processus sans possibilité de l’intercepter
  • SIGINT (2) : équivalent du Ctrl+C dans le terminal
  • SIGSTOP / SIGCONT : met en pause ou reprend un processus

Contrairement à SIGTERM, SIGKILL ne peut pas être capturé ni ignoré par le processus. C’est le marteau de dernier recours.

Ce qu’il faut retenir

  • Le load average mesure le nombre moyen de processus actifs ou bloqués en I/O, pas directement l’utilisation CPU. Divisez par le nombre de cœurs pour interpréter correctement.
  • Les données affichées par htop viennent toutes de /proc : uptime, loadavg, état des processus, utilisateur, commande.
  • L’état D (uninterruptible sleep) d’un processus est un signal d’alerte pour les problèmes d’I/O.
  • Le bit setuid sur un exécutable change le propriétaire effectif du processus lancé : point critique à auditer régulièrement.
  • mpstat donne une vue instantanée de l’utilisation CPU, plus précise que les load averages pour diagnostiquer une charge CPU réelle.

Si vous voulez creuser l’analyse de performance système ou discuter d’outils comme btop++ (le successeur moderne de htop), n’hésitez pas à me contacter ou à suivre le blog pour les prochains articles.

Sources

À lire aussi

Laisser un commentaire

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