Swap
Le swap est un espace d’échange qui recueille des données normalement en RAM lorsque l’utilisation de celle-ci dépasse un certain point.
Gérer les espaces d’échange
Voir l’utilisation des espaces d’échanges
cat /proc/swaps
Cela va donner quelque chose comme :
Filename Type Size Used Priority
/dev/dm-3 partition 3911676 3906776 -2
/var/swap file 5242876 310324 -3
Monter et démonter un espace d’échange
Les termes de montage/démontage ne sont pas corrects car les espaces d’échange ne sont pas montés sur le système.
Vous ne les verrez pas avec la commande mount
.
Pour ne plus utiliser un espace d’échange :
swapoff /dev/dm-3
Cette commande peut prendre un peu de temps car le contenu de l’espace d’échange va être déplacé dans la RAM ou dans un autre espace d’échange, ou oublié par le système s’il n’y a plus de place disponible.
Pour le réutiliser :
swapon /dev/dm-3
L’option -a
permet d’agir sur tous les espaces d’échanges connus du système (dans /etc/fstab
la plupart du temps. Systemd a un truc pour ça aussi, mais je ne l’ai encore jamais rencontré).
Exemple :
swapoff -a
swapon -a
Modifier le recours aux espaces d’échange
Les espaces d’échanges vont être utilisés avec plus ou moins d’agressivité selon la valeur de vm.swappiness
de votre système (pour voir cette valeur : sysctl vm.swappiness
).
Cette valeur peut être comprise entre 0 et 100.
Un nombre élevé veut dire que le noyau va avoir plus tendance à décharger la RAM dans les espaces d’échanges que dans un système avec un nombre bas.
Pour modifier temporairement la valeur :
sysctl -w vm.swappiness=10
Pour la modifier de façon permanente :
echo "vm.swappiness = 10" > /etc/sysctl.d/99-swappiness.conf
sysctl -p vm.swappiness=10
(le sysctl -p
est là pour appliquer la valeur que vous venez de mettre dans le fichier)
Les différents supports d’espaces d’échanges
On peut avoir du swap avec une partition comme le propose Debian lors de l’installation ou via un fichier swap, comme le fait Ubuntu. On peut aussi avoir du swap… sur la RAM ! (voir plus bas)
L’avantage du fichier sur la partition est sa manipulation plus facile. Je pense en particulier à la modification de la taille du swap.
Créer un fichier swap
C’est excessivement simple : on crée un fichier, on le prépare comme il faut, on le déclare dans /etc/fstab
et on l’utilise.
fallocate -l 2G /var/swap
mkswap /var/swap
chmod 600 /var/swap
echo "/var/swap none swap sw 0 0" >> /etc/fstab
swapon /var/swap
Utiliser de la RAM pour l’espace d’échange
Cela paraît contre-intuitif, mais c’est très simple : l’espace d’échange sera compressé et conservé en RAM. Le coût en performances de la compression/décompression des données est, avec nos processeurs actuels, généralement moindre que celui de l’utilisation d’un disque, fut-il SSD : la RAM permet des accès beaucoup, beaucoup plus rapides que n’importe quel disque.
Comme les espaces d’échanges sont utilisés comme de la RAM supplémentaire, mais lente, avoir ceux-ci sur la RAM, mais compressés équivaut plus ou moins à une augmentation de taille de RAM au prix de quelques cycles CPU.
Pour utiliser ce mécanisme, il suffit, sur Debian, d’installer le paquet zram-tools
, de modifier /etc/default/zramswap
à son goût et de relancer le service zramswap
.