LinuxInfo

Mémoire d'échange (swap) - Partition

Mise à jour : Debian 10.8

La mémoire d'échange (swap), aussi appelée mémoire cache est un espace mémoire avec deux fonctions :

La mémoire d'échange peut être constituée d'un ou plusieurs espaces disques, ces espaces pouvant être des partitions ou des fichiers dédiés. Dans ce qui suit, on s'intéresse au cas d'une mémoire d'échange constituée d'une partition.


1 - Création

La taille de la mémoire d'échange est fonction de la taille de la mémoire vive, de la complexité et du nombre d'applications chargés. On considère généralement qu'un facteur entre 1 et 2 ou 3 entre la mémoire d'échange et la mémoire vive est un bon point de départ.

$ sudo mkswap -L label_swap /dev/sdb1
$ sudo swaplabel /dev/sdb1
LABEL: swap
UUID: 332cd5f3-6008-4645-8668-5675a2b93497
$ sudo swaplabel -L label_swap /dev/sdb1

Une solution consiste à recréer la partition de swap :

$ sudo mkswap -L swapdd /dev/sdb2
mkswap: /dev/sdb2 : avertissement : effacement de l'ancienne signature swap.
Configure l'espace d'échange (swap) en version 1, taille = 8191996 Kio
LABEL=swapdd, UUID=bebbc32c-a259-41b9-a764-ae42d26add63

2 - Activation - Désactivation

3.1 - Activation "manuelle"

$ sudo swapon /dev/sdb2
$ sudo swapon -a
$ sudo swapoff /dev/sdb2
$ sudo swapon -a

3.2 - Activation automatique

La mémoire d'échange est activée automatiquement au démarrage du système, ce que l'on peut vérifier dans dmesg :

$ sudo dmesg |grep " swap "
[ 43.810481] Adding 15608828k swap on /dev/nvme0n1p7. Priority:-2 extents:1 across:15608828k SSFS

Si l'on constate que la mémoire d'échange n'est pas disponible, vérifier que la ligne de déclaration de la mémoire d'échange dans le fichier fstab est correcte. Les paramètres typiques d'une partition d'échange sont :

Exemple :

$ cat /etc/fstab |grep -iE 'type|swap'
# <file system> <mount point> <type> <options> <dump> <pass>
# swap was on /dev/sda2 during installation
UUID=6b388940-d76f-4dc5-a373-2d7e80b16d69 none swap sw 0 0
$ sudo swapoff -a 
$ sudo swapon -a

L'option -a (all) peut-être remplacée par l'identifiant de la partition, sous la forme LABEL=nom_swap, ou UUID =XXXX ou dev=/dev/sdxy

3 - Caractéristiques

Les commandes suivantes permettent de s'assurer de la disponibilité de la mémoire d'échange, de sa taille et de son occupation

$ cat /proc/swaps 
Filename Type Size Used Priority
/dev/sda2 partition 8193144 0 -1
$ lsblk -f |grep -iE 'swap|name'
NAME FSTYPE LABEL UUID MOUNTPOINT
├─sda2 swap swap 6b388940-d76f-4dc5-a373-2d7e80b16d69 [SWAP]
$ free -h
total used free shared buff/cache available
Mem: 15Gi 897Mi 13Gi 100Mi 801Mi 14Gi
Swap: 14Gi 0B 14Gi

4 - Utilisation

4.1 - swapiness

L'utilisation de la swap en complément de la mémoire vive est contrôlée par le paramètre swappiness, compris entre 0 et 100. Lorsque le paramètre est à 0, la swap n'est pas utilisée, lorsque le paramètres est à 100, son utilisation est maximum. Par défaut, ce paramètre est à 60.

$ sudo sysctl -w vm.swappiness=1
vm.swappiness = 1
$ sudo sysctl vm.swappiness
vm.swappines = 1
$ echo vm.swappiness=1 > sudo tee /etc/sysctl.d/local.conf

4.2 - Hibernation

Si la partition de swap a été modifiée ou mise à jour, mettre à jour le fichier "resume" de l'hibernation en conséquences :

$ cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=6b388940-d76f-4dc5-a373-2d7e80b16d69

Puis mettre à jour initramfs :

$ sudo update-initramfs -u -k $(uname -r)

ou

$ sudo aptitude reinstall initramfs-tools

Notes :

Pour plus de détails sur l'hibernation, voir Arrêt - Redémarrage - Suspension - Hibernation