Outils pour utilisateurs

Outils du site


sysadmin:linux:swap

Ceci est une ancienne révision du document !


Gestion du swap

Le swap est un espace mémoire complémentaire à la RAM formant la mémoire virtuelle disponible pour le système :

  • Mémoire virtuelle = RAM + SWAP

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 :

  • Cela peut conduire au plantage des applications en cours d'exécution ;
  • Un swap modéré et également bénéfique au système : il permet de libérer des espaces peu utilisés en RAM au profit des mémoires tampons (caches disque et buffers I/O).

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:

  • les partitions d'échange ;
  • les fichiers d'échange ;
  • Le zram (système de fichier compressé en RAM).
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 :

  • Le zram est une bonne alternative dans la plupart des cas : il sera potentiellement plus sollicité qu'un serveur ;
  • Un fichier ou une partition fait aussi l'affaire tout en étant moins performant que zram si le SWAP est utilisé ;
  • Pour pouvoir utiliser l'hibernation : un fichier ou partition SWAP de la taille RAM au moins ;

Systèmes embarqués

Dans des cas spécifiques comme Raspberry Pi :

  • Le zram pour éviter d'écrire sur la carte SD ou un disque connecté en USB ;
  • Ne pas désactiver le SWAP : peut causer des crashs de processus (applications ou processus système)
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

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

sysadmin/linux/swap.1772279017.txt.gz · Dernière modification : 2026/02/28 11:43 de yoann