Augmenter l’espace d’échange (SWAP) avec un fichier sous Linux
I. Présentation
Sous Linux, certaines applications peuvent être très gourmandes en mémoire et le système a alors besoin de la SWAP pour gérer cet excès de besoin en mémoire. Pour rappel, la SWAP est un espace disque qui est utilisé comme mémoire virtuelle pour le système. Elle était trés utilisée dans le passé pour décharger la mémoire vive (RAM) alors coûteuse et présente en petite quantité sur les ordinateurs. Sous la plupart des systèmes Linux basés sur Debian, la SWAP est représentée sous forme de partition (Linux la crée par défaut et averti l'utilisateur quand il n'y a pas de partition SWAP à l'installation d'un système Debian).
Plus clairement, lorsque la RAM est pleine ou à partir d'un certain seuil d'utilisation de celle-ci, le système utilise la SWAP (une partie du disque dur) comme RAM. Le problème étant que la rapidité de lecture/écriture d'un disque est souvent bien inférieur à celle de la RAM et cela peut à terme ralentir tout le système car le disque dur sera beaucoup plus sollicité.
Dans ce tutoriel, nous allons apprendre à augmenter l'espace d'échange (SWAP) d'un système Linux au travers un fichier.
II. Vérifier l'existant
Nous allons commencer par vérifier la SWAP déjà existante dans notre système, la commande présente nativement sous Debian est "swapon", nous allons utiliser l'option "-s" ("show") pour avoir un affichage de nos partitions ou fichiers SWAP :
swapon -s
Voila ce qu'il y a sur mon système, ce sera différent pour chaque système, tout dépend de ce qui a été fait lors de l'installation :
On voit ici la partition SWAP créée lors de l'installation du système, sa taille (environ 180Mo), combien de Mo sont utilisés actuellement et le niveau de priorité qui sert à déterminer quel espace est à utiliser en premier. (le plus haut est le plus prioritaire). Nous pouvons également voir cela avec la commande "htop" ou "top" . Utilisez "apt-get install htop" si besoin, ce n'est pas une commande native à Debian :
On voit ici plus clairement la SWAP disponible (175Mo) et utilisée (0Mo).
III. Création du fichier swap
Nous allons maintenant créer un fichier SWAP qui servira donc à augmenter la capacité de la SWAP présente sur le système afin de mieux décharger la RAM d'éventuelles surcharges d'utilisation. Nous allons par exemple partir sur une extension de 1024Mo de SWAP :
cd /mnt/ dd if=/dev/zerpo of=1G.swap bs=1k count=1024000
Nous pourrons vérifier que le fichier fait bien 1Go avec la commande "du" :
du -sh *
On doit ensuite rendre le fichier lisible uniquement par le système :
chmod 600 /mnt/1G.swap
On fait ensuite de ce fichier un fichier SWAP :
mkswap 1G.swap -f
La commande "mkswap" permet de paramétrer un espace SWAP sous Linux. Il nous faut pour finir activer l'utilisation de ce nouveau fichier SWAP avec la commande suivante :
swapon /mnt/1G.swap
Nous pourrons alors effectuer une seconde vérification avec la commande "swapon -s" :
Nous voyons donc bien ici que notre fichier sera utilisé en seconde priorité (si la partition SWAP d'origine est elle aussi pleine), qu'il fait près de 1Giga et que c'est un fichier (type "file"). Nous aurons un résultat plus parlant avec la commande "htop" également :
Bonjour,
article très intéressant,
=> penser à changer /dev/zerpo en /dev/zero dans le code
Cdlt,
Poulpoul
Bonjour.
Merci pour cet article.
Cependant lors d’un redémarrage, le swap reviens à sa valeur initiale (100Mo pour ma part).
Il y a une procédure à effectuer pour éviter de retaper les lignes de ce tuto à chaque reboot ?
Merci :).
Bonjour,
je confirme c’est idem pour moi, après un reboot il oublie ces commandes d’augmentation de la mémoire SWAP :/, je pense qu’il doit y avoir une possibilité de le rendre permanent. Si vous l’avez je suis preneur s’il vous plaît.
Merci à vous,
Pour le rendre permanent, il faut ajouter une ligne dans /etc/fstab :
/mnt/1G.swap none swap sw 0 0 pour le cas de cet exemple.
j ‘ai voulu etre trop gourmand ; mon swap de 4 g est trop gros . comment je fais pour le réduire?
merci