Swap (Français)

From ArchWiki
Jump to navigation Jump to search

Linux divise la RAM ( la mémoire vive) physique en blocs de mémoire appelés pages. Le swapping est le procédé par lequel une page de mémoire est copiée vers un espace prédéfini du disque dur que l'on nomme le «swap» (ou «espace virtuel», ou encore «partition d'échange», en français.)

Les tailles combinées de la mémoire physique et de l'espace d'échange correspondent à la quantité de mémoire virtuelle disponible.

La question de la nécessité du swap divise, et les avis personnels sur le sujet abondent. Cette page présente une solution «classique» à la question, qui n'est pas forcément la plus adaptée à votre cas. Voir ci-dessous #Nécessité du swap.

L'espace d'échange, peut être présent sous forme de partition et/ou de fichier, et peut être créé ou supprimé à n'importe quel moment. L'utilisation d'un fichier d'échange ou d'une partition d'échange est équivalente en terme de performance.

Obtenir des informations

Pour voir l'état de l'espace d'échange, utilisez:

swapon -s

Ou:

free -m

Partition d'échange

Une partition d'échange peut être créée avec la plupart des outils de partitionnement GNU/Linux (comme fdisk ou cfdisk). Les Partitions d'échanges sont désignées sous le type d'id 82.

Pour préparer la partition, il faut utiliser la commande mkswap (équivalent d'un formatage avec mkfs). Par exemple:

mkswap /dev/sda2
Attention: Toutes les données de la partition seront effacées.

Pour utiliser la partition d'échange:

swapon /dev/sda2

Pour que la partition d'échange s'active lors du processus de boot, éditez le fichier /etc/fstab et ajoutez une entrée pour la partition d'échange:

/dev/sda2 none swap defaults 0 0
Note: Si vous utilisez une SSD supportant le TRIM, discard est une option de montage valide pour le fichier d'échange (à placer à côté de defaults en séparant par une virgule). Le paramètre -d ou --discard avec swapon a le même effet. Pour plus d'informations sur les options de montages, utilisez man swapon.

Fichier d'échange

Comme alternative à l'utilisation d'une partition entière, un fichier d'échange à la capacité de changer sa taille à la volée est plus simple à supprimer. Ce qui est préférable si l'espace disque est faible.

Attention: Le format de fichiers BTRFS ne supporte les fichiers d'échange que depuis la version 5.0 du noyau Linux. Voir cependant Btrfs#Swap file pour la procédure à suivre ainsi que les limitations. L'utilisation d'un fichier d'échange avec un noyau antérieur à la version 5.0 peut mener à une destruction du système de fichier.

Création d'un fichier d'échange

En root utilisez dd pour créer un fichier de la taille de votre choix.

La taille se calcule avec la taille de block (bs) multipliée par le compte (count). Par exemple, pour créer un fichier de 4Gio:

dd if=/dev/zero of=/swapfile bs=4M count=1024              #M = Mégaoctets, G = Gigaoctets
Note: fallocate peut être plus simple à utiliser (et est souvent plus rapide) mais peut cependant causer d'autres ennuis. cf.swapon(8) à la rubrique NOTES.

Changez les permissions (un fichier d'échange lisible est une grande faille de sécurité locale):

chmod 600 /swapfile

Après avoir créé le fichier, formatez-le avec:

mkswap /swapfile

Activez le fichier d'échange:

swapon /swapfile

Pour que le fichier d'échange s'active lors du processus de boot, éditez le fichier /etc/fstab et ajoutez une entrée pour le fichier d'échange:

/swapfile none swap defaults 0 0

Suppression d'un fichier d'échange

Pour supprimer un fichier d'échange, il faut d'abord le désactiver.

En root:

swapoff -a

Puis, supprimez le fichier de manière classique:

rm -f /swapfile

Nécessité du swap

L'espace d'échange est recommandé pour les machines ayant peu de mémoire vive (RAM).

Ceci étant dit la présence ou non d'un swap présente certains avantages et certaines contraintes.

Disques durs de type ssd

  • L'espérance de vie des ssd étant fonction du nombre d'écritures sur celui-ci. L'utilisation de swap sur un ssd peut mener à une usure prématurée de celui-ci.
  • D'un autre coté, un swap sur un ssd présente de bien meilleures performances que sur un classique hdd.

Suspend to disk

  • L'activation de l'hibernation (suspend-to-disk), nécessite un swap de taille supérieur ou égale à la taille de mémoire vive physiquement installée.
  • D'un autre coté, depuis les ssd, les temps de démarrage sont beaucoup plus courts, et les pc portables ont aujourd'hui des autonomies de plusieurs dizaines d'heures en mode veille (suspend-to-ram).

Fatal error: Out of heap memory

  • Une application en manque de mémoire plante généralement de façon brutale, et produits souvent des tentatives d'accès à des zones protégées de la mémoire. Dans un tel cas le processus est immédiatement tué par le noyau!
  • A la vue de la quantité de ram dont disposent certains ordinateurs modernes, ce cas se présente assez rarement dans une utilisation normale (pas de compilation lourde, édition vidéo...)