Passer au contenu principal

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.