Les processus

Objectifs

  • Savoir ce qu'est un processus

  • Savoir lister les processus et prendre en compte les ressources qu'ils utilisent

DéfinitionProcessus

Un processus est un programme en cours d'exécution. Il exécute des instructions sur le processeur et peut utiliser de la mémoire vive ou de l'espace disque. Lorsque l'on démarre un logiciel, celui-ci va créer un ou plusieurs processus pour effectuer ses tâches.

Chaque processus possède un identifiant unique appelé PID

DéfinitionProcessus parent

Chaque processus possède un processus parent.

En effet chaque processus est créé par un autre processus, qui est donc son processus parent. Le seul processus à ne pas avoir de parent est le premier à être lancé au démarrage : il s'agit du processus init, qui a pour PID 1, et qui démarre le système d'exploitation.

SyntaxeLister les processus : ps -ax

1
ps -ax

La commande ps permet de lister les processus. On utilise l'option ax pour afficher tous les processus de la machine (pas uniquement ceux de la console ouverte ou ceux ayant une interface graphique).

Exemple

1
 ps ax
2
    PID TTY      STAT   TIME COMMAND
3
      1 ?        Ss     0:09 /sbin/init
4
      2 ?        S      0:00 [kthreadd]
5
      3 ?        I<     0:00 [rcu_gp]
6
      4 ?        I<     0:00 [rcu_par_gp]
7
      6 ?        I<     0:00 [kworker/0:0H-kblockd]
8
      9 ?        I<     0:00 [mm_percpu_wq]
9
     10 ?        S      0:00 [ksoftirqd/0]
10
     11 ?        I      0:12 [rcu_sched]
11
     12 ?        S      0:00 [migration/0]
12
     13 ?        S      0:00 [cpuhp/0]
13
     14 ?        S      0:00 [cpuhp/1]
14
     15 ?        S      0:00 [migration/1]
15
     16 ?        S      0:00 [ksoftirqd/1]
16
     18 ?        I<     0:00 [kworker/1:0H-events_highpri]
17
     19 ?        S      0:00 [cpuhp/2]
18
     20 ?        S      0:00 [migration/2]
19
     21 ?        S      0:19 [ksoftirqd/2]
20
[...]
21
  15371 ?        S      0:00 /bin/sh -c /usr/lib/firefox/firefox 
22
  15372 ?        Sl    16:56 /usr/lib/firefox/firefox
23
  15433 ?        Sl     7:14 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser 153
24
  15504 ?        Sl     1:58 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 6414 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser 
25
  15554 ?        Sl     3:53 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 7212 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser 
26
   27333 ?        S      0:00 /bin/sh -c spotify 
27
  27334 ?        Sl     0:43 spotify
28
  27337 ?        S      0:00 /usr/share/spotify/spotify --type=zygote --no-zygote-sandbox --no-sandbox --log-file=/usr/share/spotify/debug.log --log-severity=disable --product-version=Spotif
29
  27338 ?        S      0:00 /usr/share/spotify/spotify --type=zygote --no-sandbox --log-file=/usr/share/spotify/debug.log --log-severity=disable --product-version=Spotify/1.1.42.622 --lang=
30
  27352 ?        Sl     0:30 /usr/share/spotify/spotify --type=gpu-process --field-trial-handle=10118108429751651102,14475875873737677976,131072 --enable-features=CastMediaRouteProvider --di
31
  27363 ?        Sl     0:02 /usr/share/spotify/spotify --type=utility --utility-sub-type=network.mojom.NetworkService --field-trial-handle=10118108429751651102,14475875873737677976,131072 -
32
  27379 ?        Sl     1:18 /usr/share/spotify/spotify --type=renderer --no-sandbox --log-file=/usr/share/spotify/debug.log --field-trial-handle=10118108429751651102,14475875873737677976,13
33
  28731 pts/0    R+     0:00 ps ax
34

La résultat est ici tronqué, car on constate qu'il y a beaucoup de processus qui s'exécutent en simultané sur la machine. Pour chaque, on peut voir leur PID (première colonne) ainsi que leur nom (dernière colonne). La plupart ont des noms qui ne sont pas très parlant, en fait il s'agit de la commande qui a servi à lancer le processus. Cependant avec un peu de déduction, on peut supposer ici qu'il y a Firefox et Spotify qui sont en train de fonctionner.

On remarque aussi le processus 1 /sbin/init, ainsi que le dernier de la liste ps ax : c'est la commande que l'on vient de lancer, qui est un processus comme les autres.

RemarqueUtilisation des ressources

L'un des rôles du système d'exploitation est d'allouer les ressources à chaque processus, en particulier de l'espace en mémoire vive et du temps d'exécution sur le processeur.

Chaque processus utilisant des ressources sur le système, il est intéressant de pouvoir savoir quel processus utilise quoi. Par exemple si l'on manque de mémoire vive, identifier le processus le plus gourmand s'avère intéressant pour ramener le système à un état stable (soit en coupant ce processus si il n'est pas utile, ou en allégeant les tâches qu'il fait, ou en ajoutant de la mémoire, etc.). Il existe de nombreuses manière d'obtenir cette information, l'option "u" de la commande ps par exemple. Mais l'outil favori des administrateurs système est sans doute doute htop.

Conseilhtop

htop est une commande qui permet d'obtenir de nombreuses informations sur l'état d'exécution du système.

MéthodeÉtat global du système avec htop

La partie supérieure donne des informations sur l'état global du système.

On trouve le pourcentage d'utilisation de chaque cœur du processeur (les processeurs sont souvent composés de plusieurs cœurs, plusieurs unités arithmétiques et logique donc), ainsi que le pourcentage d'utilisation de la RAM et du swap. Pour la barre indiquant l'utilisation de la RAM, on a plusieurs couleurs :

  • en vert la mémoire utilisée ;

  • en bleu la mémoire utilisée par les buffers ;

  • en jaune le cache.

Sur le côté droit on peut aussi trouver le temps depuis lequel la machine est allumée (uptime).

MéthodeSurveiller les processus avec htop

La liste qui occupe la plus grande place dans l'interface est la liste des processus, actualisée en continu. Elle est similaire au retour de la commande ps, mais plus agréable à utiliser pour naviguer dans les processus et effectuer du tri. Par exemple en appuyant sur la touche F6 (pour Sort By dans le menu du bas) on peut choisir de trier la liste selon certains critères, comme le pourcentage d'utilisation de la mémoire.

On voit par exemple ici de nombreux processus pour Firefox, qui consomment 9,5% de la RAM de la machine.

À retenir

Tout les programmes créent des processus sur la machine pour pouvoir exécuter des instructions. Ces processus consomment des ressources (mémoire vive, temps processeur) qui sont réparties par le système d'exploitation. Il est possible de lister les processus et leur utilisation des ressources avec la commande htop, pour identifier d'éventuels processus trop gourmands.

Complément

htop explained: explanation of everything you can see in htop/top on Linux, peteris.rocks/blog/htop, 2019.