[NSLU2] Optimisation de la gestion de la SWAP sous Debian
Dans certains contextes, la mémoire peut être un critère déterminant dans la gestion d'une machine. J'en fais l'expérience sur mon NSLU2 (machine embarquée tournant sous Linux, et pouvant faire office de serveur pour 50 euros).
Avec seulement 32Mo de RAM, la SWAP est très vite sollicitée, ce qui peut être embêtant si elle est sur une partition d'une clé USB par exemple (le nombre de lectures/écritures est limité). Il est donc possible de configurer le système pour qu'il n'utilise la SWAP que lorsqu'il en a vraiment besoin, et non pas comme sur un PC de bureau (c'est à dire à tout bout de champ).
La swappiness
La swappiness décrit la quantité de RAM libre en dessous de laquelle le système va utiliser la SWAP. Par défaut, c'est à 60% de RAM. Vous pouvez le constater vous même :
cat /proc/sys/vm/swappiness
60
Il serait plus judicieux de la passer à 15% par exemple. Pour cela, il faut executer la commande :
sysctl vm.swappiness=15
Pour que cette modification soit persistante pour tous les prochains démarrage, il faut éditer le fichier /etc/sysctl.conf et y ajouter la ligne suivante:
vm.swappiness = 15
Les priorités entre plusieurs SWAP
Si vous avez plusieurs partitions SWAP, il est possible de leur attribuer chacune une priorité pour, par exemple, favoriser une SWAP sur disque dur plutôt que sur clé USB.
Pour voir les priorités actuelles :
swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 265032 173388 -1
/dev/sdb5 partition 257000 0 -2
Pour changer les priorités, il faut modifier le fichier /etc/fstab et pour chaque partition swap utiliser l'option pri=#. Plus le chiffre est élevé, plus la priorité est élevée.
nano /etc/fstab
# file system mount point type options dump pass
proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro,noatime 0 1
/dev/sda2 none swap sw,pri=1 0 0
/dev/sda1 /media/usb0 auto rw,user,noauto,noatime 0 0
/dev/sda2 /media/usb1 auto rw,user,noauto,noatime 0 0
/dev/sdb1 /hddsys ext3 defaults,noatime 0 0
/dev/sdb5 /hdd ext3 defaults,noatime 0 0
/hddsys/swap none swap sw,pri=2 0 0
Notez également l'attribut noatime pour les autres partitions, pour éviter que la date d'accès aux fichiers soit mise à jour. En effet, ces écritures inutiles sur la mémoire Flash diminuent sa durée de vie.
Conséquences !
Paragraphe ajouté le 23/06/09
Après environ 1 mois d'utilisation, j'ai rencontré un problème lors de l'utilisation de TorrentFlux (installation détaillée dans un autre article) sur ma machine. Les problèmes en question sont expliqués dans un autre article. Au final, je me suis rendu compte que la swappiness était trop faible et par moment ça faisait paniquer le système qui tuait l'application mangeuse de mémoire.
Morale de l'histoire : Ne pas télécharger de torrent ? Euh, non mais ça aurait pu :)
J'ai ré-ajusté la swapiness à 40, car maintenant j'ai un disque dur externe pour la SWAP.
Donc, si vous constatez des instabilités au niveau de la mémoire, soyez peut être moins restrictif.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :