# Chapitre 3. La fenêtre principale de kpm

# 3.1. Explication des champs

PID - ID du processus

  Chaque processus a un numéro (ID) unique, valant 1 ou plus. Quand un processus est créé, il reçoit le premier PID non encore alloué. Les PID sont (à l'heure actuelle) des entiers signés sur 16 bits, et vont donc jusqu'à 32767. Ceci est tout à fait normal et ne doit pas faire donner lieu à des inquiétudes.

PPID - ID du processus père

  Chaque processus a un processus père. L'exception est le processus 1 (init), qui est à la base de la hiérarchie des processus et n'a pas de père.

PGID - ID du groupe de processus

  Chaque processus est membre d'un groupe de processus. Les groupes de processus sont pratiques pour la distribution des signaux, et pour les terminaux pour gérer les requêtes de leurs entrées : les processus appartenant au même groupe de processus que le terminal sont au premier plan et peuvent lire, alors que les autres bloqueront avec un signal s'ils essaient de lire.

SID - ID de session

  Les ID de session sont essentiellement utilisés pour déterminer ce qui se passe lors du plantage d'un terminal.

TTY - tty de contrôle

  Le terminal de contrôle (tty) est en général le périphérique (port série, pty, etc) depuis lequel le processus a été lancé, et qu'il utilise pour ses entrées / sorties. Certains processus n'ont pas de terminal de contrôle. kpm parcourt le répertoire /dev pour déterminer le nom du terminal, mais cela peut échouer. Pour économiser de l'espace, seuls les deux derniers caractères du nom du tty sont affichés (ainsi, /dev/ttyp6 est affiché p6).

TPGID - ID du groupe de processus du propriétaire du tty

  Un tty en cours d'utilisation appartient à un certain processus. Ceci est le PGID de ce processus.

USER - Propriétaire du processus

  C'est le nom du (vrai) utilisateur auquel appartient le processus. Si l'ID de l'utilisateur effectif est différent de l'ID du véritable utilisateur, cela est indiqué par "*" ou "+". L'astérisque signifie que l'utilisateur effectif est le super-utilisateur (root), indiquant dans la plupart des cas un exécutable SETUID root.

NICE - Priorité

  La valeur de courtoisie (nice) indique la fréquence avec laquelle un processus est autorisé à tourner, et la longueur de ses intervalles de fonctionnement. La valeur va de -20 à 20, 0 par défaut. En-dessous de 0, le processus se voit allouer plus de temps CPU. Seul le super-utilisateur (root) a le droit de diminuer la courtoisie.

PRI - Longueur du prochain intervalle de fonctionnement

  C'est la longueur maximale du prochain intervalle de fonctionnement du processus (ou de ce qui reste de l'intervalle en cours, si le processus est en train de tourner). Cette longueur est ramenée dans l'échelle -20 à 20, les petits nombres indiquant une longueur plus importante.

PLCY - Politique d'ordonnancement

  FIFO (F) et Round-Robin (R) sont des politiques d'ordonnancement temps réel ; OTHER (0) est la politique de temps partagé normale sous Unix. Des processus F et R ont une priorité temps réel entre 1 et 99. Un processus tournera tant qu'il n'existe pas d'autres processus en cours avec une priorité supérieure. Des processus R tourneront pendant un intervalle de fonctionnement, après quoi ils sont envoyés en bas de la queue correspondant à leur priorité. Les processus F tourneront jusqu'à ce qu'ils abandonnent leur temps CPU (en se mettant en sommeil ou en se bloquant) ou jusqu'à ce qu'ils soient doublés par un processus de plus haute priorité. Seul le super-utilisateur (root) peut modifier la politique d'ordonnancement.

RPRI - Priorité temps réel

  Les processus temps réel (FIFO et Round-Robin) ont une priorité entre 1 et 99. Un processus prévaudra sur tout autre qui a une priorité inférieure. Les processus partageant normalement le temps CPU (politique d'ordonnancement 0) ont tous une priorité 0. Seul le super-utilisateur (root) peut modifier les priorités temps réel.

MAJFLT - Nombre d'erreurs majeures

  Une erreur de page a lieu lorsqu'un processus essaie de lire ou d'écrire depuis une page mémoire qui n'est pas présente en RAM. C'est une erreur de page majeure lorsque cela concerne des accès disque, comme mettre ou enlever des pages mémoire de la partition d'échange.

MINFLT - Nombre d'erreurs mineures

  Une erreur de page a lieu lorsqu'un processus essaie de lire ou d'écrire depuis une page mémoire qui n'est pas présente en RAM, ou d'écrire vers une page qui n'est pas accessible en écriture. C'est une erreur de page mineure lorsqu'aucun accès disque n'est mis en jeu, par exemple, écrire vers une page partagée "copy-on-write".

TRS - Taille du texte résident (Ko)

  C'est la taille du texte (comprendre ici le code exécutable) du processus qui se trouve actuellement en RAM.

DRS - Taille des données résidentes (Ko)

  C'est la taille des données (i.e. ce qui n'est pas code exécutable) du processus actuellement en RAM.

SIZE - Taille de l'image virtuelle du processus (Ko)

  C'est la taille totale de l'image du processus. Cela inclut tout le code, les données et les bibliothèques partagées du processus, y compris les pages qui ont été mises dans la partition d'échange.

SWAP - Ko dans la partition d'échange

  C'est tout simplement la différence entre SIZE et RSS, en d'autres termes l'espace disque occupé par le processus.

RSS - Taille résidente (Ko)

  C'est la taille de la partie du processus (code et données) qui se trouve vraiment en RAM, en comptant les bibliothèques partagées. Cela donne une bonne approximation de la quantité de RAM utilisée par le processus.

SHARE - Mémoire partagée (Ko)

  C'est la quantité de mémoire que le processus partage avec d'autres processus. Cela ne signifie pas que tout ou partie de cette mémoire partagée est utilisée par un autre processus, seulement que c'est possible.

DT - Nombre de pages sales

  C'est le nombre (et pas le nombre d'octets) de pages en RAM qui ont été modifiées depuis leur dernière recopie sur disque. Ces pages seules doivent être écrites sur disque avant de pouvoir être libérées pour d'autres usages.

STAT - Etat du processus

  Le processus est à tout moment dans un des états suivants :

  - R (running, en cours) : le processus est en train de tourner sur un CPU ou est prêt à tourner.

  - S (en sommeil) : le processus attend qu'un évènement se produise (entrée/sortie, chronomètre...).

  - D (sommeil ininterruptible) : le processus attend qu'un évènement se produise et ne peut être interrompu d'ici là (en général il attend un pilote de périphérique).

  - T (arrêté) : le processus est arrêté, ou est suivi par un autre processus.

  - Z (zombie) : le processus est terminé, mais son processus père n'a pas encore porté le deuil.

  - Si le processus est complètement dans la partition d'échange (pas de page résidente), un 'W' figure dans le champ (cela est aussi vrai pour les processus noyau, comme kswapd).

FLAGS - Drapeaux du processus (hex)

  Ceci comporte des informations supplémentaires sur l'état du processus. Voir la documentation dans le code source du noyau Linux pour plus de détails.

WCHAN - Fonction où le processus s'est mis en sommeil

  Si le processus est en attente de quelque chose, c'est la fonction noyau sur laquelle il s'est arrêté (le préfixe do_ ou sys_ est supprimé du nom pour le raccourcir).

UID - ID utilisateur numérique

  C'est l'ID du (vrai) utilisateur propriétaire du processus.

%WCPU - Pourcentage du temps CPU pondéré

  C'est le pourcentage du temps CPU que le processus utilise, moyenné sur les dernières 30 secondes (moyenne décroissant exponentiellement).

%CPU - Pourcentage du temps CPU depuis dernier rafraîchissement

  C'est la quantité de temps CPU que le processus a utilisé depuis la dernière mise à jour de la table de processus de kpm.

%MEM - Pourcentage de la mémoire utilisée

  C'est le pourcentage de la RAM totale utilisée par le processus (comme taille résidente). Les bibliothèques partagées sont comptées, donc cette valeur est surestimée.

START - Heure de démarrage du processus

  C'est l'heure à laquelle le processus a été démarré.

TIME - Temps CPU total utilisé

  C'est la quantité de temps CPU utilisée par le processus depuis sa création.

COMM - Commande qui a démarré le processus

  C'est la commande (nom de fichier) qui démarré le processus. Les noms longs sont tronqués.

CMDLINE - Ligne de commande qui a démarré le processus

  C'est la ligne de commande, arguments compris, qui a démarré le processus. Si l'option "Afficher le chemin des commandes" est décochée dans le menu Options, alors le chemin complet de la commande est enlevé. Les processus mis dans la partition d'échange peuvent n'afficher que le nom de la commande entre parenthèses (c'est le cas des processus noyau).