Vrijgeven van gereserveerd geheugen op VPS

Linux-systeem houdt standaard een stuk geheugen voor kdump vast. De grootte van dit geheugen kan worden ingesteld via de crashkernel-parameter. Veel applicatieontwikkelaars zullen de kernel niet doen crashen en kunnen dit geheugen vrijmaken door het bestand /etc/default/grub te bewerken.

Linux-systeem houdt standaard een stuk geheugen voor kdump vast. De grootte van dit geheugen kan worden ingesteld via de crashkernel-parameter. Veel applicatieontwikkelaars zullen de kernel niet doen crashen en kunnen dit geheugen vrijmaken door het bestand /etc/default/grub te bewerken.

Als kdump niet nodig is, kan de crashkernel-parameter worden ingesteld op 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M, waardoor een stuk geheugen wordt vrijgemaakt.

Weergavemethode: cat /etc/default/grub

Standaardwaarde:

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"

Uitleg van het crashkernel-veld: host met geheugen van 0-1G reserveert 0M geheugen, host met geheugen van 1-4G reserveert 192M geheugen, host met geheugen van 4-128G reserveert 384M geheugen, host met geheugen van meer dan 128G reserveert 512M geheugen.

Hosts met 1G geheugen worden naar de categorie 1-4G geplaatst en behouden 192MB geheugen voor kdump. Hosts met 4G geheugen worden naar de categorie 4-128G geplaatst en behouden 384MB geheugen voor kdump.

Wijzigingsmethode: 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

Herstart om actief te worden: sudo update-grub && sudo reboot

Neem als voorbeeld een vps van 2C1G die vaak wordt gebruikt door beginners, het geheugenruimte voor en na de wijziging van een schone installatie is als volgt. Zoals te zien is, is het verschil tussen 366MB en 562MB nogal groot.

# Voor wijziging
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          707180      340772      123400        2624      358872      366408
Swap:              0           0           0

# Na wijziging
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          903788      341656      451380        2616      251032      562132
Swap:              0           0           0

Geheugenruimte voor en na wijziging voor een vps van 2C4G, het verschil tussen 3.1GB en 3.5GB.

# Voor wijziging
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3512696      377672     2870944        1260      415116     3135024
Swap:              0           0           0

# Na wijziging
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3905912      374468     3408304        1252      270508     3531444
Swap:              0           0           0

Meer over kdump

Kdump is een kernel crash dump mechanisme dat wordt gebruikt om de geheugenstatus van het systeem vast te leggen wanneer de Linux kernel crasht. Het is gebaseerd op kexec technologie, kexec staat toe dat een Linux kernel een andere Linux kernel opstart zonder door het BIOS initialisatieproces te gaan, wat ervoor zorgt dat het systeem snel kan opstarten naar een nieuwe kernel (ook wel capture kernel of crashkernel genoemd) nadat de crash heeft plaatsgevonden.

Wanneer het systeem een fatale fout tegenkomt en een kernel fout (kernel panic) activeert, zal de huidige draaiende kernel (ook wel hoofdkernel genoemd) gebruik maken van kexec om een vooraf geconfigureerde capture kernel te laden en de geheugeninhoud van het systeem op te slaan op een gespecificeerde locatie, zoals een specifieke partitie op de schijf of via het netwerk naar een andere machine. Dit opgeslagen geheugenbeeldbestand (vmcore of kdump bestand) kan worden gebruikt voor een latere analyse, die helpt bij het vinden van de oorzaak van de crash voor ontwikkelaars of systeembeheerders.

Om de kdump functionaliteit te activeren, is het meestal nodig om een deel van het geheugen voor de capture kernel in de opstartconfiguratie te reserveren, zodat dit geheugen ook na een crash van de hoofdkernel onaangetast blijft en de capture kernel kan functioneren en de geheugendump kan voltooien. Het configureren en gebruiken van kdump omvat meestal het aanpassen van de bootloaderinstellingen, het aanpassen van de kernelparameters en het instellen van een geschikte opslaglocatie voor het vmcore bestand.