Comment r�duire la consommation m�moire sous Linux.

Todd Burgess (tburgess@uoguelph.ca)
adaptation fran�aise : David Cotton (dcotton@nat.fr)

v0.1, derni�re mise � jour le 21 mars 1998.
L'objet de ce mini HowTo est de d�crire comment utiliser Linux avec un syst�me disposant de peu de m�moire. En consid�rant que l'achat de plus de m�moire est hors de question, il existe de nombreux moyens de r�duire la consommation de m�moire sous Linux. De nombreuses distributions Linux sont, telles qu'elles sont livr�es, sont boulimiques du point de vue de la m�moire. Elles lancent plus de services et offrent plus de fonctionnalit�s que ce dont la plupart d'entre nous aura jamais besoin. En supprimant beaucoup de ces services vous pouvez lib�rer plusieurs m�gas de v�ritable m�moire. Mon propre syst�me est un 486DX2-66 avec 12Mo de m�moire physique et 12Mo de fichier d'�change. Il fait tourner Linux avec bonheur depuis les trois derni�res ann�es et, on peut l'esp�rer, il continuera � faire tourner Linux pendant encore quelques ann�es. :)

1. Le noyau de Linux.

Tous les noyaux Linux fournis avec les distributions sont assez bouffis et contiennent plus de fonctions que ce qu'aucun d'entre nous utilisera jamais. Si vous n'avez pas recompil� votre propre noyau, il est fortement recommand� de le faire. Comment recompiler un noyau est en dehors du domaine de ce document mais d'excellents livres et guides sur Linux couvrent ce sujet en d�tails.

Si vous recompilez votre noyau, pensez � ne pas inclure plus de fonctions que ce dont vous avez besoin. Par exemple : combien d'entre vous ont inclus le support de PLIP dans leur noyau ? Combien de ceux qui l'ont inclus l'utilisent effectivement ? Les noyaux plus petits requi�rent moins de temps pour se charger, utilisent moins de m�moire et de cycles CPU.

Autre possibilit� : les modules. Je ne les utilise pas personnellement parce que je les trouve encombrants. Si vous les utilisez et les aimez alors ils peuvent aider � soulager "l'embonpoint du noyau".

2. Les consoles virtuelles

Les consoles virtuelles sont un merveilleux moyen de lib�rer de la m�moire. La majorit� des distributions de Linux lance environ 6 consoles par d�faut. En moyenne l'ex�cution de 6 consoles n�cessite � peu pr�s 4Mo de m�moire. En retirer deux ou trois peut lib�rer quelques m�gas de m�moire.

La plupart des utilisateurs peuvent d�marrer en ne lan�ant que 3 ou 4 consoles. Combien vous choisirez d'en retirer est une question de pr�f�rences personnelles. Souvenez vous simplement que moins vous en ex�cuterez, plus vos applications auront de la m�moire pour tourner.

Le fichier qui indique combien de consoles virtuelles doivent �tre lanc�es est /etc/inittab. Pour d�sactiver des consoles :

  1. Chargez /etc/inittab dans un �diteur de texte.
  2. Recherchez une ligne ressemblant � (le point cl� �tant une ligne commen�ant par c1) : c1:12345:respawn:/sbin/getty tty1 38400 linux Commencez par le nombre le plus �lev� (ici c6) et commentez la ligne en ins�rant un '#' � la premi�re colonne. R�p�tez cette �tape autant de fois que n�cessaire. Souvenez vous que chaque ligne que vous mettez en commentaire est une console virtuelle de moins.
  3. Relancez votre machine pour que les changements prennent effet.

3. Les d�mons

Beaucoup de distributions de Linux lancent de nombreux d�mons dont la majorit� d'entre nous n'aura jamais l'usage. La plupart de ces d�mons se charge par des scripts. La localisation de ces scripts, ainsi que leur nom d�pendent de votre distribution de Linux. Les scripts de d�marrage de la Slackware sont regroup�s dans /etc/rc.d/rc.* .

Avant de poursuivre, une connaissance de la programmation de shell-scripts Unix serait un avantage certain. Si toutefois vous n'avez aucune exp�rience dans l'�criture de scripts pour Unix, ce qui suit est probablement la plus courte introduction � la programmation de scripts jamais �crite.

Prenez le script suivant :

#!/bin/sh
echo "salut tout le monde"
#echo "adieu monde cruel"

Ce script va afficher la cha�ne "salut tout le monde". Les shell scripts doivent contenir la ligne "#!/bin/sh" en toute premi�re ligne. Apr�s cela chaque ligne sera ex�cut�e comme si vous l'aviez tap�e au clavier (consid�rez les scripts comme rien d'autre que des macros du clavier am�lior�es).

Les lignes qui commencent par un '#' sont dites comment�es car elles ne sont pas ex�cut�es par l'interpr�teur de commande. Beaucoup de scripts de d�marrage, quand ils chargent des d�mons, ressemblent � :

if conditionquelconque
  do quelquechose
fi

Ce que vous voulez faire, c'est mettre en commentaire toutes les lignes allant de la marque if � la marque fi.

Vouloir localiser o� un d�mon est charg� c'est rechercher le nom du d�mon dans les scripts de d�marrage. Si je voulais trouver o� inetd est charg� dans la Slackware je ferais :

cd /etc/rc.d
grep -n inetd rc.*

3.1 inetd

inetd permet de faire des choses telles que telnet, ftp et envoyer des requ�tes de type talk � votre machine. Si vous n'utilisez pas votre syst�me en tant que serveur et que vous n'avez pas besoin d'acc�der � l'un de ces services � distance vous pouvez supprimer inetd.

3.2 lpd

lpd est utilis� pour imprimer des fichiers sur votre imprimante en employant la commande lpr. Si vous n'imprimez jamais � partir de votre station Linux vous pouvez retirer lpd. Si toutefois vous poss�dez une imprimante HP Deskjet et aimeriez imprimer je recommande fortement l'ensemble dj-printcap disponible sur le site ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz

3.3 nfsd et mountd

Ces deux d�mons sont utilis�s pour lancer un serveur NFS. Si vous n'utilisez jamais votre syst�me Linux comme serveur NFS vous pouvez les retirer en toute s�curit�.

3.4 portmap

Le d�mon portmap permet de g�rer les services RPC (NdT : Remote Procedure Call = Ex�cution de fonctions sur une autre machine). Si vous ne lancez pas de serveur NFS ou tout autre programme RPC, vous pouvez enlever portmap.

3.5 sendmail

sendmail est un autre d�mon n�cessitant pas mal de m�moire. Si vous n'utilisez jamais votre station Linux pour relayer l'envoi de courrier �lectronique et que vous ne recevez jamais de courrier vous pouvez probablement le retirer. Si vous envoyez du courrier de votre station Linux, la plupart des logiciels clients peuvent �tre configur�s pour poster le courrier � partir d'un autre serveur.

3.6 les autres

Il peut y avoir d'autres d�mons lanc�s par votre syst�me dont vous n'avez pas besoin. Retirez ce que vous jugez inutile. Deux d�mons doivent imp�rativement �tre lanc�s : syslogd et klogd.

4. Conclusion

Ce qui pr�c�de illustre le chemin que j'ai suivi pour �conomiser la m�moire sur ma station Linux. J'esp�re vous avoir fourni quelques cl�s pour vous permettre de conserver toute la m�moire de votre station Linux.

Bonne chance et bon bidouillage !

Todd Burgess

tburgess@uoguelph.ca

http://eddie.cis.uoguelph.ca/~tburgess