Libérer la mémoire réservée du VPS
Categories:
Par défaut, le système Linux réserve une partie de la mémoire pour kdump. La taille de cette mémoire peut être définie via le paramètre crashkernel. La plupart des développeurs d’applications ne déclenchent généralement pas de panne du noyau, et il est possible de libérer cette mémoire en modifiant le fichier /etc/default/grub.
Si kdump n’est pas nécessaire, vous pouvez définir le paramètre crashkernel à 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M pour libérer cette mémoire.
Vérification : cat /etc/default/grub
Valeur par défaut :
GRUB_CMDLINE_LINUX=" vga=792 console=tty0 console=ttyS0,115200n8 net.ifnames=0 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 iommu=pt crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M crash_kexec_post_notifiers=1"
Explication du champ crashkernel : pour les hôtes avec une mémoire de 0-1G, réserver 0M de mémoire ; pour les hôtes avec une mémoire de 1-4G, réserver 192M de mémoire ; pour les hôtes avec une mémoire de 4-128G, réserver 384M de mémoire ; pour les hôtes avec une mémoire de 128G et plus, réserver 512M de mémoire.
Les hôtes avec 1G de mémoire sont classés dans la tranche 1-4G et réservent 192MB de mémoire pour kdump. Les hôtes avec 4G de mémoire sont classés dans la tranche 4-128G et réservent 384MB de mémoire pour kdump.
Modification : sudo sed -i 's/crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M/crashkernel=0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M/' /etc/default/grub
Redémarrage pour prise d’effet : sudo update-grub && sudo reboot
Prenons l’exemple typique d’un VPS 2C1G souvent utilisé par les débutants. L’espace mémoire d’un système propre avant et après modification est indiqué ci-dessous. On peut constater une différence significative entre 366MB et 562MB.
# Avant modification
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 707180 340772 123400 2624 358872 366408
Swap: 0 0 0
# Après modification
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 903788 341656 451380 2616 251032 562132
Swap: 0 0 0
Espace mémoire d’un VPS 2C4G avant et après modification, montrant une différence entre 3,1GB et 3,5GB.
# Avant modification
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3512696 377672 2870944 1260 415116 3135024
Swap: 0 0 0
# Après modification
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3905912 374468 3408304 1252 270508 3531444
Swap: 0 0 0
Plus d’informations sur kdump
Kdump est un mécanisme de vidage de noyau lors d’une panne, utilisé pour capturer l’état de la mémoire du système lorsque le noyau Linux subit une panne. Il est basé sur la technologie kexec, qui permet à un noyau Linux de lancer un autre noyau Linux sans passer par l’initialisation du BIOS. Cela permet au système de démarrer rapidement sur un nouveau noyau (appelé noyau de capture ou crashkernel) après une panne.
Lorsque le système rencontre une erreur fatale et déclenche une erreur du noyau (kernel panic), le noyau en cours d’exécution (également appelé noyau principal) utilise kexec pour charger le noyau de capture préparé et enregistrer le contenu de la mémoire du système à un emplacement spécifié, comme une partition sur disque ou via le réseau vers une autre machine. Ce fichier d’image mémoire enregistré (vmcore ou fichier kdump) peut être utilisé pour une analyse post-mortem, aidant les développeurs ou les administrateurs système à identifier la cause de la panne.
Pour activer la fonctionnalité kdump, il est généralement nécessaire de réserver une partie de la mémoire pour le noyau de capture dans la configuration de démarrage du système. Ainsi, même si le noyau principal plante, cette partie de la mémoire reste intacte, garantissant que le noyau de capture peut fonctionner normalement et terminer la tâche de vidage de la mémoire. La configuration et l’utilisation de kdump impliquent généralement la modification des paramètres du chargeur d’amorçage, l’ajustement des paramètres du noyau et la configuration d’un emplacement de stockage approprié pour sauvegarder les fichiers vmcore.