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 (
[email protected])
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
<
ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz>
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
<
[email protected]>
<
http://eddie.cis.uoguelph.ca/~tburgess>