Jump to content

Swap (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Swap. Date de la dernière traduction: 2025-05-18. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Cette page fournit une introduction à l'espace d'échange («swap») sur GNU/Linux. Elle couvre la création et l'activation des partitions swap et des fichiers swap.

Extrait de All about Linux swap space :

Linux divise sa mémoire physique («RAM») en morceaux de mémoire appelés pages. «Swap»-er est le processus par lequel une page de mémoire est copiée dans l'espace préconfiguré sur le disque dur, appelé espace d'échange ou «swap», pour libérer cette page de mémoire. Les tailles combinées de la mémoire physique et de l'espace d'échange constituent la quantité de mémoire virtuelle disponible.

La prise en charge de l'espace d'échange est assurée par le noyau Linux et les utilitaires de l'espace utilisateur du paquet util-linux.

Espace de pagination

L'espace de pagination peut prendre la forme d'une partition de disque ou d'un fichier. Les utilisateurs peuvent créer un espace de pagination pendant l'installation ou à tout moment par la suite. L'espace d'échange peut être utilisé à deux fins, pour étendre la mémoire virtuelle au-delà de la mémoire physique installée (RAM), et aussi pour prendre en charge la suspension sur disque.

L'intérêt d'étendre la mémoire virtuelle avec le swap dépend de la quantité de mémoire physique installée. Si la quantité de mémoire physique est inférieure à la quantité de mémoire requise pour exécuter tous les programmes souhaités, alors il peut être bénéfique d'activer l'échange. Cela permet d'éviter le situations d'insuffisance de mémoire, où le mécanisme «OOM killer» du noyau Linux tentera automatiquement de libérer de la mémoire en tuant les processus. Pour augmenter la quantité de mémoire virtuelle à la quantité requise, ajoutez la différence nécessaire (ou plus) comme espace d'échange.

Le plus gros inconvénient de l'espace d'échange lorsqu'elle est utilisée est sa baisse de performance, consultez la section #Performance. Par conséquent, l'activation de l'espace de pagination est une question de préférence personnelle : certains préfèrent que les programmes soient tués plutôt que d'utiliser du «swap» et d'autres préfèrent utiliser la «swap» et un système plus lent lorsque la mémoire physique est épuisée.

Note: Il n'y a aucune différence de performance entre l'utilisation d'une partition d'échange et d'un fichier d'échange contigu.

Pour vérifier l'état du swap, utilisez :

$ swapon --show

Ou pour afficher la mémoire physique ainsi que l'utilisation de l'espace de pagination :

$ free -h

Partition de swap

Une partition de swap peut être créée avec la plupart des outils de partitionnement GNU/Linux. Les partitions de swap sont identifiées par le type de partition GUID 0657FD6D-A4AB-43C4-84E5- sur les systèmes GPT (type 8200 pour gdisk, type swap pour fdisk) et par l’identifiant de type 82 sur les systèmes MBR.

Pour configurer une partition comme «Linux swap», on utilise la commande mkswap(8). Par exemple :

# mkswap /dev/sdxy
Attention: Toutes les données de la partition spécifiée seront perdues.

Pour activer le périphérique pour la pagination :

# swapon /dev/sdxy

Voir swapon(8) pour la syntaxe des options.

Activation au démarrage

Pour activer la partition de swap au démarrage, vous pouvez soit :

périphérique_UUID est l'UUID de l'espace swap désigné.

Voir fstab (Français) for the file syntax, and systemd (Français)#systemd.mount - montage.

Désactivation de la swap

Pour désactiver un espace d'échange spécifique :

# swapoff /dev/sdxy

Vous pouvez également utiliser le paramètre -a pour désactiver tout l'espace d'échange.

Comme l'espace d'échange est géré par systemd, il sera réactivé au prochain démarrage du système. Pour désactiver définitivement l'activation automatique la swap détecté, exécutez systemctl --type swap pour trouver l'unité .swap responsable et masquez-la.

Fichier d'échange

En tant qu'alternative à la création d'une partition entière, un fichier d'échange offre la possibilité de varier sa taille à la volée, et est plus facilement supprimé. Cela peut être particulièrement souhaitable si l'espace disque est limité (par exemple, un SSD de taille modeste).

File system Supports swap files
Bcachefs Non
Btrfs Oui
F2FS Oui
ext4 Oui
JFS Oui
NILFS2 Non
NTFS3 Oui
ReiserFS Oui
XFS Oui
ZFS Non

Création de fichiers d'échange

Note: Pour Btrfs, suivez la procédure décrite dans dans Btrfs#Swap file au lieu des étapes ci-dessous.

Utilisez pour créer un fichier swap de la taille de votre choix. Par exemple, pour créer un fichier swap de 4 Go :

Utilisez mkswap(8) pour créer un fichier d’échange de la taille de votre choix (voir Partitioning#Swap pour les recommendations). Par exemple, pour créer un fichier d’échange de 4 Gio :

# mkswap -U clear --size 4G --file /swapfile

Activez le fichier d'échange :

# swapon /swapfile

Enfin, modifiez la configuration fstab pour ajouter une entrée pour le fichier d'échange :

/etc/fstab
/swapfile none swap defaults 0 0

Pour plus d'informations, consultez Fstab (Français)#Utilisation.

Note: Le fichier d'échange doit être spécifié par son emplacement sur le système de fichiers, et non par son UUID ou son LABEL.

Supprimer le fichier swap

Pour supprimer un fichier swap, il faut d'abord le désactiver, puis le supprimer :

# swapoff /swapfile
# rm -f /swapfile

Enfin, supprimez l'entrée correspondante de /etc/fstab.

Chiffrement de la swap

Consultez Dm-crypt/Swap encryption.

Performance

Les opérations de swap sont généralement beaucoup plus lentes que l'accès direct aux données en RAM. Cependant, désactiver complètement le swap dans le but d'améliorer les performances peut parfois entraîner une dégradation de celles-ci. S'il n'y a pas suffisamment de mémoire physique disponible pour tout contenir, l'absence de swap laisse moins de mémoire disponible pour les caches du système de fichiers, ce qui provoque une utilisation du disque plus fréquente et plus lourde.

Les valeurs de swap peuvent être ajustées pour améliorer les performances :

Swappiness

Lorsque l’utilisation de la mémoire atteint un certain seuil, le noyau commence à analyser la mémoire active pour déterminer ce qu’il peut libérer. Les données de fichiers peuvent être écrites sur le système de fichiers (si elles ont été modifiées), déchargées, puis rechargées ultérieurement ; d’autres types de données doivent être écrites dans la swap avant de pouvoir être déchargées.

Le paramètre sysctl swappiness représente la préférence du noyau pour l’écriture dans la swap plutôt que dans les fichiers. Il peut avoir une valeur comprise entre 0 et 200 (maximum 100 si le noyau Linux est antérieur à 5.8) ; la valeur par défaut est 60. Une valeur faible pousse le noyau à privilégier la libération des fichiers ouverts, tandis qu’une valeur élevée l’incite à utiliser l’espace de swap. Une valeur de 100 signifie que le coût des entrées/sorties (I/O) est considéré comme équivalent.

Note: Il existe une idée reçue courante selon laquelle le paramètre swappiness affecterait le seuil de mémoire ou empêcherait l’utilisation de la swap. En réalité, il influence uniquement la préférence du noyau pour libérer les pages de fichiers plutôt que d’utiliser la swap. Consultez cet article pour une explication plus détaillée, ou le code source du noyau pour voir où ce paramètre est utilisé.

Pour vérifier la valeur actuelle de swapiness :

$ sysctl vm.swappiness

Alternativement, le fichier /proc/sys/vm/swappiness peut être lu afin d'obtenir la valeur entière brute.

Pour définir temporairement la valeur de swappiness :

# sysctl -w vm.swappiness=35

Pour définir la valeur de permutation de manière permanente, créez un fichier de configuration sysctl.d(5). Par exemple :

/etc/sysctl.d/99-swappiness.conf
vm.swappiness=35

Pour que le chargeur d'amorçage définisse la «swappiness» lors du chargement du noyau, ajoutez un paramètre du noyau, par exemple sysctl.vm.swappiness=35.

Pour tester et en savoir plus sur les raisons pour lesquelles cela peut fonctionner, jetez un œil à cet article.

Pour tester cela et en savoir plus sur pourquoi cela peut fonctionner, consultez cet article. Pour un contre-argument plus récent, voyez cet autre article.

Pression du cache VFS

Un autre paramètre sysctl qui affecte les performances de swap est vm.vfs_cache_pressure, qui contrôle la tendance du noyau à récupérer la mémoire qui est utilisée pour la mise en cache des caches VFS, par rapport au pagecache et au swap. L'augmentation de cette valeur augmente la vitesse à laquelle les caches VFS sont récupérés [1]. Pour plus d'informations, consultez la documentation du noyau Linux.

Priorité

Si vous avez plus d'un fichier d'échange ou d'une partition d'échange, vous devriez envisager d'attribuer une valeur de priorité (0 à 32767) pour chaque zone d'échange. Le système utilisera les zones d'échange de priorité supérieure avant d'utiliser les zones d'échange de priorité inférieure. Par exemple, si vous avez un disque plus rapide et un disque plus lent, attribuez une priorité plus élevée à la zone d'échange située sur le périphérique le plus rapide. Les priorités peuvent être attribuées dans fstab via le paramètre pri :

UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults,pri=100 0 0
UUID=d7eb6062-01c8-4367-ac1d-3bf1167de8bb none swap defaults,pri=10  0 0

Ou via le paramètre --priority de swapon :

# swapon --priority 100 /dev/sda1

Si deux zones ou plus ont la même priorité, et qu'il s'agit de la plus haute priorité disponible, les pages sont allouées entre elles en alternance stricte.

Utilisation de zswap ou zram

Zswap est une fonctionnalité du noyau Linux qui fournit un cache en écriture compressé pour les pages échangées, ZRAM crée un bloc d'échange virtuel compressé en mémoire comme alternative à un fichier ou une partition d'échange sur le disque. Les deux approches augmentent les performances et diminue les opérations d'entrée/sortie sur disque.

Striping

Il n'est pas nécessaire d'utiliser RAID pour améliorer les performance du swap. Le noyau lui-même peut répartir le swap sur plusieurs périphériques, si vous leur donnez simplement la même priorité dans le fichier /etc/fstab. Reportez-vous à The Software-RAID HOWTO pour plus de détails.

OSZAR »