Comment reduire la consommation memoire sous Linux. TToodddd BBuurrggeessss ((ttbbuurrggeessss@@uuoogguueellpphh..ccaa)) _a_d_a_p_t_a_t_i_o_n _f_r_a_n_c_a_i_s_e _: David Cotton (dcotton@nat.fr) v0.1, derniere mise a jour le 21 mars 1998. L'objet de ce mini HowTo est de decrire comment utiliser Linux avec un systeme disposant de peu de memoire. En considerant que l'achat de plus de memoire est hors de question, il existe de nombreux moyens de reduire la consommation de memoire sous Linux. De nombreuses distri- butions Linux sont, telles qu'elles sont livrees, sont boulimiques du point de vue de la memoire. Elles lancent plus de services et offrent plus de fonctionnalites que ce dont la plupart d'entre nous aura jamais besoin. En supprimant beaucoup de ces services vous pouvez liberer plusieurs megas de veritable memoire. Mon propre systeme est un 486DX2-66 avec 12Mo de memoire physique et 12Mo de fichier d'echange. Il fait tourner Linux avec bonheur depuis les trois dernieres annees et, on peut l'esperer, il continuera a faire tourner Linux pendant encore quelques annees. :) 11.. LLee nnooyyaauu ddee LLiinnuuxx.. 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 recompile votre propre noyau, il est fortement recommande 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 details. Si vous recompilez votre noyau, pensez a 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 requierent moins de temps pour se charger, utilisent moins de memoire et de cycles CPU. Autre possibilite : 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 a soulager "l'embonpoint du noyau". 22.. LLeess ccoonnssoolleess vviirrttuueelllleess Les consoles virtuelles sont un merveilleux moyen de liberer de la memoire. La majorite des distributions de Linux lance environ 6 consoles par defaut. En moyenne l'execution de 6 consoles necessite a peu pres 4Mo de memoire. En retirer deux ou trois peut liberer quelques megas de memoire. La plupart des utilisateurs peuvent demarrer en ne lancant que 3 ou 4 consoles. Combien vous choisirez d'en retirer est une question de preferences personnelles. Souvenez vous simplement que moins vous en executerez, plus vos applications auront de la memoire pour tourner. Le fichier qui indique combien de consoles virtuelles doivent etre lancees est /etc/inittab. Pour desactiver des consoles : 1. Chargez /etc/inittab dans un editeur de texte. 2. Recherchez une ligne ressemblant a (le point cle etant une ligne commencant par c1) : c1:12345:respawn:/sbin/getty tty1 38400 linux Commencez par le nombre le plus eleve (ici c6) et commentez la ligne en inserant un '#' a la premiere colonne. Repetez cette etape autant de fois que necessaire. 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. 33.. LLeess ddeemmoonnss Beaucoup de distributions de Linux lancent de nombreux demons dont la majorite d'entre nous n'aura jamais l'usage. La plupart de ces demons se charge par des scripts. La localisation de ces scripts, ainsi que leur nom dependent de votre distribution de Linux. Les scripts de demarrage de la Slackware sont regroupes 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 experience dans l'ecriture de scripts pour Unix, ce qui suit est probablement la plus courte introduction a la programmation de scripts jamais ecrite. Prenez le script suivant : #!/bin/sh echo "salut tout le monde" #echo "adieu monde cruel" Ce script va afficher la chaine "salut tout le monde". Les shell scripts doivent contenir la ligne "#!/bin/sh" en toute premiere ligne. Apres cela chaque ligne sera executee comme si vous l'aviez tapee au clavier (considerez les scripts comme rien d'autre que des macros du clavier ameliorees). Les lignes qui commencent par un '#' sont dites commentees car elles ne sont pas executees par l'interpreteur de commande. Beaucoup de scripts de demarrage, quand ils chargent des demons, ressemblent a : if conditionquelconque do quelquechose fi Ce que vous voulez faire, c'est mettre en commentaire toutes les lignes allant de la marque if a la marque fi. Vouloir localiser ou un demon est charge c'est rechercher le nom du demon dans les scripts de demarrage. Si je voulais trouver ou inetd est charge dans la Slackware je ferais : cd /etc/rc.d grep -n inetd rc.* 33..11.. iinneettdd inetd permet de faire des choses telles que telnet, ftp et envoyer des requetes de type talk a votre machine. Si vous n'utilisez pas votre systeme en tant que serveur et que vous n'avez pas besoin d'acceder a l'un de ces services a distance vous pouvez supprimer inetd. 33..22.. llppdd lpd est utilise pour imprimer des fichiers sur votre imprimante en employant la commande lpr. Si vous n'imprimez jamais a partir de votre station Linux vous pouvez retirer lpd. Si toutefois vous possedez une imprimante HP Deskjet et aimeriez imprimer je recommande fortement l'ensemble dj-printcap disponible sur le site 33..33.. nnffssdd eett mmoouunnttdd Ces deux demons sont utilises pour lancer un serveur NFS. Si vous n'utilisez jamais votre systeme Linux comme serveur NFS vous pouvez les retirer en toute securite. 33..44.. ppoorrttmmaapp Le demon portmap permet de gerer les services RPC (NdT : Remote Procedure Call = Execution de fonctions sur une autre machine). Si vous ne lancez pas de serveur NFS ou tout autre programme RPC, vous pouvez enlever portmap. 33..55.. sseennddmmaaiill sendmail est un autre demon necessitant pas mal de memoire. Si vous n'utilisez jamais votre station Linux pour relayer l'envoi de courrier electronique 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 etre configures pour poster le courrier a partir d'un autre serveur. 33..66.. lleess aauuttrreess Il peut y avoir d'autres demons lances par votre systeme dont vous n'avez pas besoin. Retirez ce que vous jugez inutile. Deux demons doivent imperativement etre lances : syslogd et klogd. 44.. CCoonncclluussiioonn Ce qui precede illustre le chemin que j'ai suivi pour economiser la memoire sur ma station Linux. J'espere vous avoir fourni quelques cles pour vous permettre de conserver toute la memoire de votre station Linux. Bonne chance et bon bidouillage ! Todd Burgess .