Ceci est une ancienne révision du document !
Le swap est un espace mémoire complémentaire à la RAM formant la mémoire virtuelle disponible pour le système :
Il est utilisé par le système lorsque l'espace commence à manquer en RAM, c'est pourquoi il est important de ne pas le désactiver totalement :
On cherche cependant toujours à limiter son usage car pour les types de swap se trouvant hors de la RAM, les temps d'accès sont beaucoup plus longs, les performances globales sont dégradées.
Sur les versions récentes de GNU/Linux plusieurs formes de swap peuvent coexister:
Pour les systèmes virtualisés, privilégier un fichier disque dédié pour la swap. On peut ainsi facilement le redimensionner ou de l'exclure des snapshots.
Pour une station de travail :
Dans des cas spécifiques comme Raspberry Pi :
| RAM (Go) | Taille du swap |
|---|---|
| RAM >= 6 | swap = RAM |
| 1 < RAM < 4 | swap = 1,5 x la RAM |
| RAM < 1 | swap = 2 x RAM |
Plusieurs espaces d'échange peuvent être activés sur un même système. Pour les lister:
swapon -s
La valeur par défaut est souvent définie à 60.
A valider/reformuler
Cela signifie que quand il y a moins de 60% d'espace libre en RAM, le système peut commencer à swapper.
On pourra diminuer cette valeur pour utiliser au mieux la RAM et optimiser les performances : il faut cependant garder en tête que le swap reste nécessaire au bon fonctionnement du système et qu'il n'est pas recommandé en général de le désactiver totalement.
Pour afficher la valeur du paramètre :
cat /proc/sys/vm/swappiness
Modification
sudo sysctl vm.swappiness=1 # Désactiver/réactiver le swap pour prendre en compte la modif sudo swapoff -av sudo swapon -av
Pour rendre la modification permanente, utiliser un fichier de configuration sous /etc/sysctl.d/
vm.swappiness=1
La création/suppression de fichier d'échange se fait au sein d' un système de fichier. Il n'y a donc pas d'impact sur la table de partitionnement. Cela apporte plus de souplesse et présente moins de risques.
Les commandes ci dessous permettent de créer une fichier d'échange:
# la commande fallocate réserve un bloc d'espace disque pour le swap sudo fallocate -l 4g /file.swap # modifier les droits d’accès sudo chmod 600 /file.swap # déclarer le fichier comme espace d'échange sudo mkswap /file.swap # activer sudo swapon /file.swap
Pour que le fichier soit utilisé à chaque démarrage, modifier le fichier /etc/fstab
# Fichier d'échange (swap) /file.swap none swap sw 0 0
# désactiver l'espace de swap déclaré sur le fichier sudo swapoff /file.swap # Suppression du fichier sudo rm /file.swap
Modifier /etc/fstab pour supprimer ou commenter l'entrée relative au fichier de swap.
# Désactivation du fichier d'échange (swap) # /file.swap none swap sw 0 0
Modifier le seuil d'utilisation de la mémoire swap (swappiness)
echo vm.swappiness=1 | sudo tee /etc/sysctl.d/99-swappiness.conf
Désactiver / réactiver le swap pour prendre en compte les modifcations:
sudo swapoff -av sudo swapon -av
Le wiki effacer-cache-memoire-swap détaille les commandes permettant de supprimer les données présentes dans la mémoire d'échange.