La commande top

Publié le par Maryy

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 demarrage).



Vous pourrez utiliser l'option -d pour spécifier des délais de rafraîchissement (en secondes).

En cours d'utilisation de top, il est possible de stopper un process de manière interactive en tapant k. Il demande alors quel process doit être terminé :



Et demande ensuite quel signal il doit envoyer  : 15 (SIGTERM) est le signal par défaut (taper entrée) qui met fin à un process, 9 (SIGKILL) est plus brutal.



Pour quitter top, appuyer simplement sur la touche "q".

Apprenons maintenant à lire les premières lignes :


Nous trouvons dans cette ligne l'heure d'exécution du top, le temps passé sans redémarrage, le nombre d'utilisateurs connectés puis le load average. Ce dernier est une moyenne de la charge système : Le premier chiffre, 1.27, est une moyenne de la charge calculée sur une minute. Le second chiffre est calculé sur cinq minutes, et le troisième sur quinze minutes. Il est un très bon indicateur de la (sur)charge de travail d'un système. La valeur idéale dépend de l'activité de la machine (serveur de fichiers, mail, sauvegarde). De façon générale, il faudrait qu'il soit inférieur à 2 mais il faut prendre cette information avec des pincettes et se renseigner au cas par cas.


Jusqu'ici pas de difficulté à la lecture, il s'agit des tâches : le total, les "en cours", celles qui attendent qu'on les appelle, celles qui ont été stoppées (et que l'on peut redémarrer) et les zombies.


La CPU utilisée se décompose de cette façon :
us  --  Temps CPU Utilisateur
Temps consacré par le CPU aux processus utilisateurs dont la priorité n'a pas été modifiée.

 sy  --  Temps CPU Système
Temps consacré par le CPU au noyau et à ses processus.

 ni  --  Temps Politesse (« Nice ») du CPU
Temps consacré par le CPU aux processus utilisateurs dont la priorité (ou politesse) a changé.

  id  --  Idle
Charge du CPU libre ou "pourcentage de glandouille" comme si bien expliqué par kioob dans le forum www.webmaster-hub.com :)

 wa  --  en attente E/S (« iowait »)
Temps consacré par le CPU à attendre la fin des E/S (typiquement les accès disque)

 hi  --  IRQ Matériel
Temps consacré par le CPU aux sollicitations des interruptions matérielles.

 si  --  Interruptions logicielles
Temps consacré par le CPU aux sollicitations des interruptions logicielles.
  st  --  Pas trouvé. Si quelqu'un le sait, ça m'intéresse !


La mémoire : le total (ici 256 Mo), la mémoire utilisée, la mémoire libre, la mémoire utilisée en tampon.


La swap : donne les statistiques de la swap. La swap totale, celle qui est utilisée, celle qui est libre et celle qui est mise en cache. Mémoire physique de la machine.


Passons maintenant au tableau qui se situe en-dessous :



PID  --  Id de Processus
L'ID unique du processus de la tâche. Il s'adapte périodiquement, sans toutefois redémarrer à zéro.

USER  --  Nom de l'utilisateur
Le nom utilisateur effectif du propriétaire de la tâche.
PR  --  Priorité
La priorité de la tâche.
NI  --  Valeur de politesse
La valeur de politesse de la tâche. Une valeur négative signifie une priorité plus haute, à l'inverse d'une valeur positive. Un zéro signifie simplement que le lancement d'une tâche ne tiendra pas compte de la priorité.
VIRT  --  Image virtuelle (Ko)
La quantité totale de mémoire virtuelle utilisée par la tâche, à savoir l'ensemble des codes, données, bibliothèques partagées et pages qui ont été transférées sur l'espace d'échange (« swap »).

VIRT = SWAP + RES.

RES  --  Taille résidente (Ko)
La mémoire physique « non swappée » qu'une tâche a utilisée.

RES = CODE + DATA.

SHR  --  Taille mémoire partagée (Ko)
La quantité de mémoire partagée utilisée par une tâche. Elle reflète simplement la quantité de mémoire qui peut être potentiellement partagée avec d'autres processus.
S  --  État du processus
L'état de la tâche peut être :
  « D » = dormant non interruptible
  « R » = s'exécutant
  « S » = dormant
  « T » = tracé ou stoppé
  « Z » = zombie

Les tâches dites « s'exécutant » doivent plutôt être considérées comme « prêtes à s'exécuter »  --  leur task_struct est simplement représentée sur la file d'attente d'exécution du noyau. Même en l'absence d'une véritable machine SMP, vous pouvez voir de nombreuses tâches dans cet état en fonction de la valeur du délai et de la valeur de politesse de top.

%CPU  --  Utilisation CPU
Le partage par les tâches du temps CPU écoulé depuis le dernier rafraîchissement d'écran, exprimé en pourcentage du temps CPU total. Dans un véritable environnement SMP, si le « mode Irix » est Inactif, top fonctionnera en « mode Solaris » où l'usage cpu d'une tâche sera répartie sur le nombre total de CPU. Vous pouvez basculer de modes « Irix/Solaris » avec la commande interactive « I ».
%MEM  --  Utilisation mémoire (RES)
Pourcentage de la mémoire physique disponible actuellement utilisée par la tâche.
TIME+  --  Temps CPU, en centièmes
Identique à « TIME », mais avec une précision supérieure grâce aux centièmes de seconde.
COMMAND  --  Ligne de commande ou nom du programme
Affiche la ligne de commande utilisée pour lancer une tâche ou le nom du programme associé. Vous basculez entre la ligne de commande et le nom avec la touche « c », qui est à la fois une option de la ligne de commande et une commande interactive.

Lorsque vous décidez d'afficher des lignes de commandes, les processus sans ligne de commande (tels les processus légers du noyau) seront présentés avec leur seul nom de programme entre parenthèses, comme dans cet exemple :
      ( mdrecoveryd )

Tout affichage est susceptible d'être tronqué si la largeur du contenu dépasse celle du champ. Cette largeur dépend des autres champs sélectionnés, de leur ordre et de la taille actuelle de l'écran.

Note : Le comportement du champ/colonne « COMMAND » est unique, dans la mesure où sa largeur n'est pas fixe. La totalité de la largeur résiduelle de l'écran sera, lors de l'affichage, allouée à cette colonne (jusqu'à un maximum de 512 caractères) pour répondre à la croissance potentielle des noms de programmes des lignes de commandes.

Et voici d'autres colonnes que l'on peut faire apparaître :
PPID  --  PID du processus parent
Le processus ID du parent de la tâche.
RUSER  --  Nom de l'utilisateur réel
Le véritable nom utilisateur du propriétaire de la tâche.
UID  --  Identifiant de l'utilisateur
L'ID utilisateur effectif du propriétaire de la tâche.
GROUP  --  Nom du groupe
Le nom du groupe réel du propriétaire de la tâche.
TTY  --  Tty de contrôle
Le nom du terminal de contrôle. Habituellement, il s'agit du périphérique (port série, pty, etc.) à partir duquel le processus a été lancé, et qu'il utilise pour ses entrées ou ses sorties. Au cas où aucun terminal n'est associé à une tâche, un « ? » est affiché.
P  --  Dernier CPU utilisé (SMP)
Un nombre représentant le dernier processeur utilisé. Dans un véritable environnement SMP, cette valeur change fréquemment puisque le noyau utilise intentionnellement une affinité faible. Ainsi, l'activité propre de top peut casser cette faible affinité et faire en sorte qu'un nombre plus élevé de processus change plus souvent de CPU (à cause d'une demande supplémentaire de temps CPU).
TIME  --  Temps CPU
Le temps CPU total utilisé par la tâche depuis son lancement. Quand le « mode Cumulatif » est Actif, chaque processus est listé avec le temps cpu que lui et ses fils tués ont utilisé. Vous pouvez basculer en « mode Cumulatif » avec « S », qui est une option de la ligne de commande et une commande interactive. Voir la commande interactive « S » pour plus d'informations sur ce mode.
SWAP  --  Taille en espace d'échange (Ko)
La portion en espace d'échange de la totalité de l'image mémoire virtuelle d'une tâche.
CODE  --  Taille du code (Ko)
La quantité de mémoire physique allouée à un exécutable, aussi connue comme la taille du « text resident set » ou TRS
DATA  --  Taille des données + pile (Ko)
La quantité de mémoire physique allouée à autre chose que des exécutables, aussi connue sous le nom de « data resident set » ou DRS.
nFLT  --  nombre de défauts de page
Le nombre de défauts de pages majeurs générés par une tâche. Un défaut de page est levé quand un processus tente de lire ou d'écrire dans une page virtuelle placée hors de son espace d'adressage. Un défaut de page est majeur quand un accès à une mémoire de masse (comme un disque) est impliqué lors de la récupération de cette page.
nDRT  --  nombre de pages modifiées (« Dirty Pages »)
Le nombre de pages modifiées depuis la dernière écriture sur disque. Les pages modifiées doivent être écrites sur disque avant que l'espace mémoire physique correspondant puisse être utilisé pour une autre page virtuelle.
WCHAN  --  Fonction Résidente
Selon la disponibilité de la carte des liens du noyau (« System.map »), ce champ affichera le nom ou l'adresse de la fonction du noyau dans laquelle la tâche est effectivement résidente. Un tiret (« - ») s'affichera dans cette colonne en regard des tâches actives.

Note : L'affichage de ce champ provoquera une surestimation de plus de 700 Ko due au propre fonctionnement de top. La seule manière que vous ayez pour réduire cette surestimation est de redémarrer top.

Flags  --  Indicateurs de tâche
Cette colonne représente les indicateurs de tâches actuellement ordonnancées. Ces indicateurs sont exprimés en notation hexadécimale sans les zéros. Ils sont officiellement documentés dans <linux/sched.h>. Une documentation moins formelle est accessible sur les écrans « Choix de champs » et « Ordonnancement de champs ».

Pour une lecture plus pratique (mais également moins complète) on peut utiliser la commande htop :



Et voici un autre outil pour une bonne interprétation de l'utilisation de la mémoire : free.



Sources :
http://www.linuxcertif.com/
http://wiki.loli-grub.be/index.php/Commandes_utilis%C3%A9es_en_console_ou_SSH#Commande_top:_proccesus_.2B_m.C3.A9moire
http://doc.ubuntu-fr.org/loadaverage

Publié dans Linux

Commenter cet article

fenetre 01/07/2010 18:58


merci pur cette très bonne explication bien plus simple à lire que les fastidieuses page de man top
je bookmarque la page