La mémoire virtuelle, SWAP

· 411 words · 2 minute read

La mémoire virtuelle, c’est quoi ? 🔗

La mémoire virtuelle est un espace sur le disque dur (espace swap ou espace d’échange) qu’on alloue au système afin de pallier un manque de mémoire physique (RAM).

A quoi sert elle ? 🔗

La mémoire virtuelle est utilisée lorsque la quantité de mémoire physique (RAM) est pleine. Si le système a besoin de plus de mémoire que disponible, il va tout simplement déplacer les plages de la mémoire physique peu utilisés pour les placer dans la zone d’échange (swap). Il pourra ensuite les récupérer depuis l’espace d’échange s’il en a de nouveau besoin.

Comment s’en servir ? 🔗

Avant toute action sur votre serveur pensez a le sauvegarder ! 🔗

Pour ajouter de la mémoire virtuelle, démarrez un terminal avec les permissions administrateur (sudo) et suivez les étapes

Dans notre cas, nous allons créer espace swap sous forme d’un fichier de Go, il est aussi possible de le faire sous forme de partition.

# Création du fichier vide de 4Go
dd if=/dev/zero of=/swap count=4096 bs=1MiB
# Changement des permissions du fichier
sudo chmod 600 /swap
# Création de la zone d'échange (swap)
sudo mkswap /swap
# Activation du swap 
sudo swapon /swap
# On vérifie que la modification a bien été prise en compte:
free -mh
#              total        used        free      shared      buff/cache   available
# Mem:           3.6G        2.4G        118M        408M        # 1.1G        564M
# Swap:          4.0G          0B        4.0G

Le fichier d’échange a bien été crée et est fonctionnel ! Mais pour le rendre persistant il manque une étape importante

# ouvrez le fichier /etc/fstab avec votre éditeur de fichier # habituel 
sudo nano /etc/fstab
# à la fin du fichier ajouter la ligne suivante : 
/swap swap swap sw 0 0

Pour aller plus loin : la ‘swapiness’ 🔗

La valeur de swapiness permet de définir à partir de quel moment votre serveur doit utiliser la zone d’échange. Pour connaitre cette valeur vous pouvez exécuter la commande suivante

cat /proc/sys/vm/swappiness
# 30

La valeur retournée est comprise entre 0 et 100, plus on est proche de 100 plus le serveur va utiliser l’espace de partage. Dans mon cas la valeur est 30.

Pour modifier cette valeur vous pouvez le faire de deux manières :

# Avec la commande (le changement ne sera pas persistant) 
sudo sysctl vm.swappiness=10
# De manière persistante en éditant le fichier 
#/etc/sysctl.conf
sudo nano /etc/sysctl.conf
# et ajouter la ligne suivante
vm.swappiness = 10
# Les modification seront prise en compte au prochain 
# redémarrage