Liberação de Memória Reservada do VPS

Liberação de Memória Reservada do VPS

O sistema Linux reserva por padrão um bloco de memória para o kdump, cujo tamanho pode ser definido pelo parâmetro crashkernel. Como a maioria dos desenvolvedores de aplicação raramente aciona falhas no kernel, é possível liberar essa memória modificando o arquivo /etc/default/grub.

Se o kdump não for necessário, defina o parâmetro crashkernel como 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M, o que libera um bloco de memória.

Verificação: cat /etc/default/grub

Valor padrão:

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"

A explicação do campo crashkernel é: hosts com memória de 0-1G reservam 0M, hosts com memória de 1-4G reservam 192M, hosts com memória de 4-128G reservam 384M, e hosts com memória de 128G ou mais reservam 512M.

Um host com 1G de memória é classificado na faixa 1-4G, reservando 192MB para kdump. Um host com 4G de memória é classificado na faixa 4-128G, reservando 384MB para kdump.

Modificação: 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

Reinicie para aplicar: sudo update-grub && sudo reboot

Para vps de 2C1G, comumente usados por iniciantes, o espaço de memória antes e depois da modificação é mostrado abaixo. É possível observar a diferença significativa entre 366MB e 562MB.

# Antes da modificação
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          707180      340772      123400        2624      358872      366408
Swap:              0           0           0

# Após a modificação
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          903788      341656      451380        2616      251032      562132
Swap:              0           0           0

Para vps de 2C4G, o espaço de memória antes e depois da modificação é mostrado abaixo, com diferença entre 3.1GB e 3.5GB.

# Antes da modificação
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3512696      377672     2870944        1260      415116     3135024
Swap:              0           0           0

# Após a modificação
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3905912      374468     3408304        1252      270508     3531444
Swap:              0           0           0

Mais informações sobre kdump

Kdump é um mecanismo de despejo de falhas de kernel, usado para capturar o estado da memória do sistema quando o kernel Linux falha. Baseia-se na tecnologia kexec, que permite que um kernel Linux inicie outro kernel Linux sem passar pelo processo de inicialização da BIOS, permitindo que o sistema inicie rapidamente um novo kernel (também chamado de kernel de captura ou crashkernel) após uma falha.

Quando o sistema encontra um erro fatal e aciona um erro de kernel (kernel panic), o kernel em execução (também chamado de kernel principal) usa kexec para carregar o kernel de captura previamente preparado e salvar o conteúdo da memória do sistema em um local específico, como uma partição de disco ou enviar pela rede para outra máquina. Este arquivo de imagem de memória salvo (vmcore ou arquivo kdump) pode ser usado para análise posterior, ajudando desenvolvedores ou administradores de sistema a identificar a causa da falha.

Para habilitar a funcionalidade kdump, geralmente é necessário reservar uma parte da memória do sistema para o kernel de captura na configuração de inicialização, garantindo que, mesmo após a falha do kernel principal, essa parte da memória permanecerá inalterada, permitindo que o kernel de captura funcione normalmente e conclua a tarefa de despejo de memória. A configuração e uso do kdump normalmente envolve modificar as configurações do gerenciador de boot, ajustar parâmetros do kernel e definir um local de armazenamento adequado para salvar o arquivo vmcore.