====== Mise en place d'un fichier de swap ====== Par défaut, les machines du Public Cloud n'ont pas de partition de swap. Mais il est possibler d'utiliser un fichier de swap. C'est particulièrement utile sur les machines hébergeant un GeoNature et possédant seulement 7Go de mémoire. Cette quantité de mémoire peut s'avérer trop juste lors des phases de construction des fichiers de l'appli par Angular. Pour éviter que Linux déclenche l'[[https://doc.ubuntu-fr.org/oomkiller|OOM Killer]] la mise en place d'un fichier de swap est une solution. ===== Ressources ===== * [[https://www.it-connect.fr/comment-ajouter-de-lespace-de-swap-sur-gnu-linux-debian-10/|Comment ajouter de l’espace de swap sur Gnu/Linux Debian 10]] * [[https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-debian-11| How To Add Swap Space on Debian 11]] ===== Procédure ===== ==== Créer un fichier de swap ==== * Se connecter à la machine désirée (ex. //bkp-srv//) : ssh admin@bkp--sinp * Passer en root : sudo -i * Vérifier la présence d'un espace de swap : swapon --show ne doit rient afficher... * Vérifier l'activité du swap avec : free -h * Commencer par vérifier l'espace disponible sur la partition racine : df -h * Comme nous souhaitons juste pouvoir dépasser la taille la mémoire vive de la machine de façon ponctuelle pour éviter l'action de l'OOM Kille, nous allons utiliser un espace de swap de seulement 4Go. * Création d'un fichier de swap de 4Go : fallocate -l 4G /swapfile * Si ''fallocate'' n'est pas disponible sur le système, l'installer avec : apt install util-linux * Vérifier la présence du fichier et sa taille avec : ls -lh /swapfile * Rendre le fichier accessible seulement par root : chmod 600 /swapfile * Marquer le fichier comme étant un espace de swap avec : mkswap /swapfile * Activer l'espace de swap : swapon /swapfile * Vérifier la présence du swap : swapon --show * Puis vérifier son activité avec : free -h * Rendre ces changements permanent : * Commencer par faire une copie du fichier ''fstab'' avec : cp /etc/fstab /etc/fstab.save$(date '+%Y-%m-%d') * Ajouter la nouvelle entrée pour le fichier de swap : echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ==== Régler la fréquence d'utilisation du swap (swappiness) ==== Le paramètre ''swappiness'' définit la fréquence d'utilisation du swap. Sa valeur peut varier de 0 à 100. Une valeur basse signifie que le noyau linux essaye de rendre l'utilisation du swapping aussi légère que possible, alors qu'une valeur haute rend l'utilisation de l'espace de swap beaucoup plus fréquente. Nous souhaitons privilégier la RAM et nous voulons utiliser le swap seulement en dernier recours. Nous allons donc définir une valeur proche de 0. * Modifier la valeur de ''swappiness'' du serveur : * Vérifier la valeur actuelle (normalement 60) : cat /proc/sys/vm/swappiness * Modifier la valeur en la passant à 10 avec : sysctl vm.swappiness=5 * Puis rendre cette modification permanente : vi /etc/sysctl.conf * Ajouter ce contenu à la fin du fichier de configuration de ''sysctl'' : # Diminution de l'utilisation du swap suite à l'ajout d'un fichier d'échange /swapfile -- adminsys [2024-02-12] vm.swappiness=5 ==== Régler la pression de mise en swap (vfs_cache_pressure) ==== En diminuant la valeur de ce paramètre cela permet de garder plus de liens vers les fichiers en mémoire, pour accélérer l’accès aux fichiers. * Modifier la valeur du paramètre ''vfs_cache_pressure'' du serveur : * Vérifier la valeur actuelle (normalement 100) : cat /proc/sys/vm/vfs_cache_pressure * Diminuer la pression d'utilisation du cache à 50 pour accélérer les applications : sysctl vm.vfs_cache_pressure=50 * Puis rendre cette modification permanente : vi /etc/sysctl.conf * Ajouter ce contenu à la fin du fichier de configuration de ''sysctl'' : # Diminution de la pression d'utilisation du cache suite à l'ajout d'un fichier d'échange /swapfile -- adminsys [2024-02-12] vm.vfs_cache_pressure=50 ==== Forcer le nettoyage du swap ==== De manière occasionnelle, le système utiliser un important pourcentage de mémoire swap alors même que de la mémoire RAM est disponible. Pour nettoyer la mémoire Swap du système, il suffit d'arrêter le swap. Cela va déplacer toutes les données de la mémoire Swap vers la mémoire RAM. * Voir : https://www.redhat.com/sysadmin/clear-swap-linux * Procédure : * Vérifier l'espace swap occupé et s'il y a assez d'espace correspondant en RAM : ''free -m'' * Désactiver le swap : ''swapoff -a'' * Attendre approximativement 30s pour que tout le swap est basculé en RAM. Il est possible de voir la diminution de l'occupation du Swap avec : ''free -m'' * Réactiver le swap : ''swapon -a''