{{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). 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 ===== 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/** 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 [[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://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)]]