8. Les d�mons du noyau

Si vous saisissez la commande ps aux, vous verrez quelque chose ressemblant � ce qui suit�:

USER       PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
root         1  0.1  8.0  1284   536   ? S    07:37   0:04 init [2]
root         2  0.0  0.0     0     0   ? SW   07:37   0:00 (kflushd)
root         3  0.0  0.0     0     0   ? SW   07:37   0:00 (kupdate)
root         4  0.0  0.0     0     0   ? SW   07:37   0:00 (kpiod)
root         5  0.0  0.0     0     0   ? SW   07:37   0:00 (kswapd)
root        52  0.0 10.7  1552   716   ? S    07:38   0:01 syslogd -m 0
root        54  0.0  7.1  1276   480   ? S    07:38   0:00 klogd
root        56  0.3 17.3  2232  1156   1 S    07:38   0:13 -bash
root        57  0.0  7.1  1272   480   2 S    07:38   0:01 /sbin/agetty 38400 tt
root        64  0.1  7.2  1272   484  S1 S    08:16   0:01 /sbin/agetty -L ttyS1
root        70  0.0 10.6  1472   708   1 R   Sep 11   0:01 ps aux 

C'est une liste de processus en cours d'ex�cution sur le syst�me. Les informations proviennent du syst�me de fichiers /proc que j'ai mentionn� dans la section pr�c�dente. Remarquez que init est le processus num�ro un. Les processus 2, 3, 4 et 5 sont kflushd, kupdate, kpiod et kswapd. Il y a quand m�me quelque chose d'�trange�: dans les deux colonnes de la taille virtuelle de stockage (SIZE) et la taille r�elle de stockage (Real Storage Size, RSS), ces processus renvoient z�ro. Comment un processus peut-il ne pas utiliser de m�moire�?

Il s'agit des d�mons propres au noyau. La majeure partie du noyau n'appara�t m�me pas dans la liste des processus, et le seul moyen de conna�tre la m�moire qu'il utilise est de soustraire la m�moire disponible � la quantit� totale de m�moire install�e. Les d�mons du noyau sont d�marr�s apr�s init, et obtiennent de ce fait des num�ros de processus normaux, mais leur code et leurs donn�es n'existent qu'au sein de la zone de m�moire occup�e par le noyau.

Les noms des d�mons du noyau dans la liste sont �crits entre crochets car le syst�me de fichiers /proc ne contient pas d'information sur la ligne de commande utilis�e pour lancer ces processus.

Alors, � quoi servent ces d�mons ? Les versions pr�c�dentes de ce document pr�sentaient ici un appel � contribution, car mes connaissances dans ce domaine sont limit�es. L'explication (partielle) qui suit est une fusion de diff�rentes r�ponses � cet appel, pour lesquelles j'ai une grande reconnaissance. Toutes indications, r�f�rences et corrections sont bienvenues.

Toutes les entr�es et sorties sont effectu�es via des tampons en m�moire, ce qui acc�l�re grandement les choses. Tout ce qu'un programme �crit peut �tre conserv� en m�moire, puis �tre �crit sur le disque par blocs plus grands et plus efficaces. C'est le travail des d�mons kflushd et kupdate.

Tr�s souvent, les processus sont au repos, et ceux qui tournent n'ont pas besoin d'avoir l'int�gralit� de leur code et de leurs donn�es charg�e en m�moire. Cela signifie que l'on peut faire un meilleur usage de notre m�moire vive, en faisait glisser les pages inutilis�es des programmes en cours d'ex�cution vers la ou les partitions d'�change du disque dur. Le transfert des donn�es depuis et vers la m�moire selon les besoins est assur� par kpiod et kswapd. Toutes les secondes environ, kswapd se r�veille et v�rifie la situation de la m�moire, et, si une page devient n�cessaire en m�moire ou que l'on commence � manquer de place, invoque kpiod.

Il peut aussi exister un d�mon kapmd si vous avez activ� la gestion avanc�e de l'�nergie (apm) dans votre noyau.

8.1. Configuration

Le programme update vous permet de configurer kflushd et kswapd. Essayez update -h pour avoir plus d'information.

L'espace d'�change (swap) est mis en service avec swapon et hors service par swapoff. Ce sont les scripts d'initialisation /etc/rc.sysinit ou /etc/rc.d/rc.sysinit qui appellent g�n�ralement swapon, lorsque le syst�me d�marre. J'ai entendu dire que swapoff �tait pratique pour �conomiser l'�nergie des ordinateurs portables.

8.2. Exercices

Faites un update -t, notez les commentaires des derni�res lignes parlant de ��threshold for buffer fratricide�� (seuil fratricides des tampons). Voil� un concept bien intriguant ! Enqu�tez�!

Entrez dans le r�pertoire /proc/sys/vm et faites un cat sur tous les fichiers s'y trouvant. Voyez ce que vous pouvez en tirer.

8.3. Aller plus loin

Le livre ��Le noyau Linux�� du projet de documentation Linux (LDP). Suivre les liens dans la section aller plus loin - le noyau Linux.

Le code source du noyau, si vous �tes courageux ! Le programme source de kswapd se trouve dans linux/mm/vmscan.c, ceux de klushd et kupdate se trouvent eux dans linux/fs/buffer.c.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:22