Outils pour utilisateurs

Outils du site


sysadmin:linux:gestion-swap

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
sysadmin:linux:gestion-swap [2026/09/17 12:17] – supprimée - modification externe (Date inconnue) 127.0.0.1sysadmin:linux:gestion-swap [2026/09/17 12:17] (Version actuelle) – ↷ Nom de la page changé de sysadmin:linux:swap à sysadmin:linux:gestion-swap yoann
Ligne 1: Ligne 1:
 +{{tag>sysadmin linux swap}}
  
 +
 +====== 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).
 +
 +
 +<note>
 +Si plusieurs distributions GNU/Linux coexistent, elles peuvent utiliser une même partition d'échange.
 +</note>
 +
 +===== 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)
 +
 +<note warning>
 +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.
 +</note>
 +
 +^ 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:
 +
 +<code bash>
 +swapon -s
 +</code>
 +
 +===== Paramétrages du swap =====
 +
 +<note warning>
 +La valeur du paramètre **swapiness** n'a rien à voir avec la quantité de RAM utilisée avant de commencer le processus de swap.
 +</note>
 +
 +==== 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 :
 +
 +<code bash>
 +cat /proc/sys/vm/swappiness
 +</code>
 +
 +
 +Modification
 +
 +<code bash>
 +sudo sysctl vm.swappiness=10
 +
 +# Désactiver/réactiver le swap pour prendre en compte la modif
 +sudo swapoff -av
 +sudo swapon -av
 +
 +sudo swapon --show
 +</code>
 +
 +Pour rendre la modification permanente, utiliser un fichier de configuration sous **/etc/sysctl.d/**
 +
 +<file conf 99-swappiness.conf>
 +vm.swappiness=10
 +</file>
 +
 +===== Configurer un ZRAM =====
 +
 +<code bash>
 +apt install -y zram-tools
 +</code>
 +
 +Par défaut le ZRAM peut occuper jusqu'à 50% de l'espace RAM disponible. On peut baisser un peut cette valeur via le fichier ''/etc/default/zramswap''
 +
 +
 +
 +===== 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:
 +
 +<code bash>
 +# 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
 +</code>
 +
 +Pour que le fichier soit utilisé à chaque démarrage, modifier le fichier /etc/fstab
 +
 +<file>
 +# Fichier d'échange (swap)
 +/file.swap    none    swap    sw 0 0
 +</file>
 +
 +
 +===== Les priorités =====
 +
 +La commande **''swapon -s''** affiche les différents périphériques disponibles avec leur priorité d'utilisation. Une valeur élevée correspond à un usage prioritaire.
 +
 +<code bash>
 +swapon -s
 +Filename                                Type            Size            Used            Priority
 +/swapfile                               file            511996          0               -2
 +/dev/zram0                              partition       600404          0               100
 +</code>
 +
 +
 +Dans l'exemple ci-dessus, le système utilisera le ZRAM puis le fichier d'échange.
 +
 +Pour modifier les priorités :
 +
 +<code bash>
 +# Plus la valeur est haute, plus priorité est élevée
 +swapon --priority=100 /dev/zram0
 +swapon --priority=-10 /swapfile
 +</code>
 +
 +
 +===== Suppression d'un fichier d'échange =====
 +
 +
 +<code bash>
 +# désactiver l'espace de swap déclaré sur le fichier
 +sudo swapoff /file.swap
 +
 +# Suppression du fichier
 +sudo rm /file.swap 
 +</code>
 +
 +Modifier **/etc/fstab**  pour supprimer ou commenter l'entrée relative au fichier de swap.
 +
 +<file>
 +# Désactivation du fichier d'échange (swap)
 +# /file.swap    none    swap    sw 0 0
 +</file>
 +
 +Modifier le seuil d'utilisation de la mémoire swap (swappiness)
 +
 +<code bash>
 +echo vm.swappiness=1 | sudo tee /etc/sysctl.d/99-swappiness.conf
 +</code>
 +
 +Désactiver / réactiver le swap pour prendre en compte les modifcations:
 +<code bash>
 +sudo swapoff -av
 +sudo swapon -av
 +</code>
 +
 +===== Gestion du swap =====
 +
 +Le wiki [[sysadmin:linux: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 =====
 +
 +  * [[https://doc.ubuntu-fr.org/swap|La mémoire SWAP (ubuntu-fr.org)]]
 +  * [[https://www.linuxtricks.fr/wiki/swap-informations-bonnes-pratiques-configuration|SWAP : information, bonnes pratiques et configuration (linuxtricks.fr)]]
 +  * [[https://www.linuxtricks.fr/wiki/zram-compresser-la-ram-au-lieu-de-swapper-sur-linux|Configurer un ZRAM (linuxtricks.fr)]]
 +  * [[https://unix.stackexchange.com/questions/137509/allocating-swap-space-with-kvm|Allocation du SWAP pour les VMs KVM (unix.stackexchange.com) (en)]]
 +  * [[https://www.linuxtricks.fr/wiki/zram-compresser-la-ram-au-lieu-de-swapper-sur-linux|Utiliser le zram (linuxtricks.fr)]]
 +  * [[https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/|A propos du paramètre swapiness du noyau Linux (howtogeek.com) (en)]]
 +  * [[https://brandonvisca.com/guide-swap-linux-configuration-optimisation/|Guide de configuration du swap (brandonvisca.com)]]