Rilasciare la memoria riservata del VPS
Categories:
Linux riserva di default una parte di memoria per kdump, la dimensione di questa memoria può essere impostata tramite il parametro crashkernel. La maggior parte degli sviluppatori di applicazioni non incontra crash del kernel, pertanto è possibile liberare questa memoria modificando il file /etc/default/grub.
Se kdump non è necessario, è possibile impostare il parametro crashkernel su 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M, liberando così una parte di memoria.
Metodo di verifica: cat /etc/default/grub
Valore predefinito:
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"
Spiegazione del campo crashkernel: significa che per host con memoria da 0-1G viene riservata 0M di memoria, per host con memoria da 1-4G viene riservata 192M di memoria, per host con memoria da 4-128G viene riservata 384M di memoria, per host con memoria superiore a 128G viene riservata 512M di memoria.
Gli host con 1G di memoria vengono classificati nella fascia 1-4G, riservando 192MB di memoria per kdump. Gli host con 4G di memoria vengono classificati nella fascia 4-128G, riservando 384MB di memoria per kdump.
Metodo di modifica: 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
Riavvio per applicare: sudo update-grub && sudo reboot
Prendendo come esempio un VPS 2C1G comunemente usato per lo studio da principianti, lo spazio di memoria prima e dopo la modifica su un sistema pulito è mostrato di seguito. Si può notare la differenza tra 366MB e 562MB, che è piuttosto significativa.
# Prima della modifica
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 707180 340772 123400 2624 358872 366408
Swap: 0 0 0
# Dopo la modifica
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 903788 341656 451380 2616 251032 562132
Swap: 0 0 0
Lo spazio di memoria prima e dopo la modifica su un VPS 2C4G è mostrato di seguito, con una differenza tra 3.1GB e 3.5GB.
# Prima della modifica
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3512696 377672 2870944 1260 415116 3135024
Swap: 0 0 0
# Dopo la modifica
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3905912 374468 3408304 1252 270508 3531444
Swap: 0 0 0
Maggiori informazioni su kdump
Kdump è un meccanismo di dump di crash del kernel, utilizzato per catturare lo stato della memoria di un sistema Linux quando il kernel va in crash. Si basa sulla tecnologia kexec, che permette a un kernel Linux di avviare un altro kernel Linux senza passare attraverso il processo di inizializzazione del BIOS, consentendo al sistema di avviare rapidamente un nuovo kernel (chiamato anche kernel di cattura o crashkernel) dopo un crash.
Quando il sistema incontra un errore fatale e si verifica un kernel panic, il kernel in esecuzione (chiamato anche kernel principale) utilizza kexec per caricare un kernel di cattura predefinito e salvare il contenuto della memoria del sistema in una posizione specifica, come una partizione specifica su disco o inviandolo tramite rete a un’altra macchina. Questo file di immagine della memoria salvata (vmcore o file kdump) può essere utilizzato per l’analisi post-crash, aiutando gli sviluppatori o gli amministratori di sistema a identificare le cause del crash.
Per abilitare la funzionalità kdump, è solitamente necessario riservare una parte della memoria del sistema per il kernel di cattura nelle impostazioni di avvio, in modo che anche se il kernel principale va in crash, questa parte di memoria rimanga inalterata, garantendo che il kernel di cattura possa funzionare correttamente e completare il compito di dump della memoria. La configurazione e l’uso di kdump coinvolgono tipicamente la modifica delle impostazioni del bootloader, l’aggiustamento dei parametri del kernel e l’impostazione di una posizione di archiviazione appropriata per salvare i file vmcore.