Table des matières

, ,

Gestion du swap

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:

Si plusieurs distributions GNU/Linux coexistent, elles peuvent utiliser une même partition d'échange.

Volumétrie et cas d'usage

:TODO_DOCUPDATE:

Systèmes virtualisés

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.

Poste de travail

Pour une station de travail :

Systèmes embarqués

Dans des cas spécifiques comme Raspberry Pi :

Ne créer des espaces d'échange que sur les disques mécaniques. Les SSD ayant un nombre limité d'écritures ne sont pas adaptés pour cet usage : on privilégie en général le zram.
RAM (Go) Taille du swap
RAM >= 6 swap = RAM
1 < RAM < 4 swap = 1,5 x la RAM
RAM < 1 swap = 2 x RAM

Lister les espaces d'échanges

Plusieurs espaces d'échange peuvent être activés sur un même système. Pour les lister:

swapon -s

Paramétrages du swap

La valeur du paramètre swapiness n'a rien à voir avec la quantité de RAM utilisée avant de commencer le processus de swap.

Modifier le seuil d'utilisation du swap

La valeur par défaut est souvent définie à 60.

:TODO_DOCUPDATE: 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/

99-swappiness.conf
vm.swappiness=1

Création d'un fichier d'échange

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

Suppression d'un fichier d'échange

# 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

Gestion du swap

Le wiki effacer-cache-memoire-swap détaille les commandes permettant de supprimer les données présentes dans la mémoire d'échange.

Références