]>

# Le manuel de kpm

Mario
Weilguni

    mweilguni@kde.org

Version 1.3k1, 02 février 1998

Ce manuel décrit kpm 1.31k1, un utilitaire d'information et de gestion de processus.

Utilitaire d'information et de gestion de processus

Processus
mémoire vive
ressources système

## Informations générales

### Qu'est-ce que kpm ?

kpm vous permet de visualiser et d'intervernir sur les processus tournant sur votre système Linux. Il affiche des informations détaillées sur les processus en cours, ainsi que l'état des ressources système comme la mémoire vive, la partition d'échange, la charge du CPU, etc. Vous pouvez tuer des processus, ou modifier leur degré de priorité. Si vous êtes connecté en tant que super-utilisateur (root), vous avez en outre la possibilité de modifier la politique d'ordonnancement.

### Informations légales

kpm est fortement inspiré de `qps` par Mattias Engdegård. La principale différence entre kpm et qps est l'interface (KDE). kpm est fidèle à la plupart des standard KDE, utilise les fichiers de configuration KDE et dispose de la gestion de session. Certaines fonctionnalités de qps ont été supprimées (par exemple la possibilité d'afficher des tables ou des widgets dans le style MacOS 7).

qps (et donc kpm) sont distribués sous les termes de la Licence Publique Générale GNU (GPL).

### Configuration nécessaire pour kpm

- Un système Linux 2.0. kpm utilise intensivement le système de fichiers `/proc` de Linux. Malheureusement, cela n'est pas portable à d'autres systèmes d'exploitation, car chaque UNIX semble avoir sa propre façon d'organiser les informations sur les processus.

- K Desktop Environment (KDE) version Beta2 ou supérieure.

- Qt 1.31. Comme KDE est basé sur Qt, cela n'est pas un problème.

- Votre noyau (kernel) Linux doit avoir été compilé avec le support du système de fichiers `/proc`. Comme beaucoup de programmes comme top ne marcheront pas sans cela, c'est le cas de presque tous les noyaux.

## Le menu

### Le menu Fenêtre

Icônifier

  Icônifie la fenêtre principale. Lorsqu'elle est icônifiée, kpm utilise beaucoup moins de temps CPU car il n'a pas besoin de mettre à jour la liste des processus. Si vous utilisez kwm comme gestionnaire de fenêtres et que l'option "Placer sur le tableau de bord" est activée, vous verrez alors une petite icône sur le tableau de bord affichant la charge moyenne du système. Avec d'autres gestionnaires de fenêtres comme fvwm, l'icône de kpm elle-même montrera cette charge (mais cela peut dépendre de la façon dont le gestionnaire de fenêtres est configuré).

Quitter

  Quitte kpm (fermer la fenêtre principale a le même effet).

### Menu Processus

Courtoisie (nice)

  Vous permet de mofidier le degré de priorité du (ou des) processus sélectionné(s). Sous Linux, un processus a une priorité, ou courtoisie, pouvant aller de -20 (la plus forte priorité) à +20 (la plus basse priorité), ainsi, augmenter le niveau de courtoisie donne au processus moins de temps CPU. Vous n'avez pas le droit de d'augmenter la priorité d'un programme (diminuer sa courtoisie) à moins d'être connecté en tant que super-utilisateur (root). Cela signifie que, en tant qu'utilisateur normal, vous ne pouvez abaisser la courtoisie d'un processus même si vous l'avez augmentée auparavant.

  Evidemment vous ne pouvez modifier la courtoisie que de vos propres processus. Le super-utilisateur (root) peut modifier la courtoisie de tout processus, et abaisser sa priorité.

Ordonnancement

  Cette option n'est accessible qu'au root. La boîte de dialogue "Modifier l'ordonnancement" permet au super-utilisateur de changer la politique d'ordonnancement des processus sélectionnés (en utilisant les extensions temps réel Posix.1b présentes dans les noyaux Linux 2.0.x). Les processus normaux sont classés SCHED&lowbar;OTHER et ont une priorité statique 0 ; les processus temps réel suivent la politique SCHED&lowbar;FIFO ou SCHED&lowbar;RR et ont une priorité statique entre 1 et 99.

Info socket

  Affiche une liste des sockets TCP et UDP utilisés par les processus sélectionnés.

### Menu Signal

Le menu Signal vous permet d'envoyer divers signaux aux processus sélectionnés. Attention en utilisant cette fonctionnalité, surtout si plusieurs processus sont sélectionnés. Les signaux standard de Linux sont expliqués ici.

### Menu Affichage

Rafraîchir la liste des processus

  Met à jour la liste des processus immédiatement. C'est très utile si vous avez choisi des intervalles longs entre les mises à jour. Vous obtiendrez le même résultat en cliquant sur le bouton de Rafraîchissement dans la barre d'outils ou en appuyant sur la barre espace.

Tous les processus

  Affiche tous les processus.

Processus personnels

  Affiche vos propres processus, y compris ceux tournant ayant été rattachés à un autre utilisateur (i.e. les programmes SETUID root que vous avez lancés).

Processus non root

  Affiche tous les processus sauf ceux démarrés par le super-utilisateur.

Processus en cours d'exécution

  N'affiche que les processus en cours (en fonctionnement ou dans la queue d'exécution).

Champs utilisateur

  La liste des processus montrera les champs les plus intéressants, i.e. ceux typiquement montrés par "top".

Champs processus

  Affiche les champs les plus utiles pour la gestion des tâches.

Champs mémoire

  Affiche les informations sur l'utilisation de la mémoire, les fautes de page, etc.

## La fenêtre principale de kpm

### 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&lowbar; ou sys&lowbar; est supprimé du nom pour le raccourcir).

UID - ID utilisateur numérique

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

&percnt;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).

&percnt;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.

&percnt;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).

## Appendice

### Signaux Unix

Voici les signaux tels qu'ils sont expliqués dans la page de manuel signal(7). Pour plus de détail, consulter cette page de manuel par :

`man 7 signal`

Les signaux suivants sont définis par la norme Posix et peuvent être envoyés par kpm :

- SIGHUP: Suspension détectée sur le terminal de contrôle ou mort du processus de contrôle.

- SIGINT: Interruption par le clavier

- SIGQUIT: Sortie par le clavier

- SIGILL: Instruction illégale

- SIGABRT: Signal abandon par abort(3)

- SIGFPE: Exception de virgule flottante

- SIGKILL: Signal KILL (tuer)

- SIGSEG: Référence mémoire invalide

- SIGPIPE: Tube brisé : write to pipe with no readers

- SIGALRM: Alarme du chronomètre par alarm(1)

- SIGTERM: Signal TERM (terminaison, fin)

- SIGUSR1: Signal défini par l'utilisateur 1

- SIGUSR2: Signal défini par l'utilisateur 2

- SIGCHLD: Enfant terminé ou arrêté

- SIGCONT: Continue if stopped

- SIGSTOP: Arrêt du processus

- SIGTSTP: Arrêt tapé sur le tty

- SIGTTIN: Entrée tty pour le processus en tâche de fond

- SIGTTOU: Sortie tty pour le processus en tâche de fond

Les signaux suivants ne sont pas définis par la norme Posix, et ne sont pas (encore) disponibles dans kpm :

- SIGTRAP: Trace/breakpoint trap

- SIGIOT: IOT trap. A synonym for SIGABRT

- SIGBUS: Bus error

- SIGSYS: Bad argument to routine (SVID)

- SIGSTKFLT: Stack fault on coprocessor

- SIGURG: Urgent condition on socket (4.2 BSD)

- SIGIO: I/O now possible (4.2 BSD)

- SIGPOLL: synonym for SIGIO (System V)

- SIGCLD: synonym for SIGCHLD

- SIGXCPU: CPU time limit exceeded (4.2 BSD)

- SIGXFSZ: File size limit exceeded (4.2 BSD)

- SIGVTALRM: Virtual alarm clock (4.2 BSD)

- SIGPROF: Profile alarm clock

- SIGPWR: Power failure (System V)

- SIGINFO: A synonym for SIGPWR

- SIGLOST: File lock lost

- SIGWINCH: Window resize signal (4.3 BSD, Sun)

- SIGUNUSED: Unused signal

### Problèmes et bugs connus

- Parfois, kpm meurt avec une erreur de segmentation si plus d'un processus est sélectionné et que la liste est mise à jour. Je ne sais pas pourquoi...

- La barre d'état et la liste des processus elle-même sont optimisées pour une police de 12pt. Elle conservera une apparence correcte jusqu'à 14pt, mais sera vraiment hideuse avec des polices plus importantes.

- kpm peut consommer beaucoup de ressources CPU si l'intervalle entre deux rafraîchissements est trop court. Sur mon système (AMD K6PR200), il consomme à peu près 5 pourcents du temps CPU avec un intervalle d'une seconde. Cela dépend considérablement du nombre total de processus (tous les processus, pas seulement ceux affichés) et peut être beaucoup élevé que cela.

- Le pourcentage de temps CPU n'est pas très précis pour des intervalles de rafraîchissements courts, à cause de problèmes de discrétisation.

- Le champ WCHAN n'est pas valide si un processus est en sommeil dans un endroit ne figurant pas dans `System.map` (par exemple dans un module du noyau). Dans ce cas, la dernière entrée de `System.map` sera affichée (du genre `&lowbar;end`).

- kpm ne peut pas gérer plus d'un processus avec un PID donné. Ce cas rare peut arriver lorsque CLONE&lowbar;PID est utilisé avec l'appel système clone().