VPS'deki ayrılmış belleği serbest bırakma

Linux sistemi varsayılan olarak kdump için bir miktar bellek ayırır, bu bellek miktarı crashkernel parametresi ile ayarlanabilir. Çoğu uygulama geliştiricisi genellikle çekirdek çökmesini tetiklemez, bu yüzden belleği serbest bırakmak için /etc/default/grub dosyasını düzenleyebiliriz.

Eğer kdump kullanılmayacaksa, crashkernel parametresi 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M olarak ayarlanabilir, böylece bir miktar bellek serbest bırakılmış olur.

Görünüm şekli: cat /etc/default/grub

Varsayılan değer aşağıdaki gibidir:

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"

crashkernel alanının anlamı, 0-1G bellekli sunucular için 0M bellek ayrılmış, 1-4G bellekli sunucular için 192M bellek ayrılmış, 4-128G bellekli sunucular için 384M bellek ayrılmış, 128G üzeri sunucular için 512M bellek ayrılmış.

1G bellekli sunucular 1-4G dilimine yükseltilir ve kdump için 192MB bellek ayrılır. 4G bellekli sunucular 4-128G dilimine yükseltilir ve kdump için 384MB bellek ayrılır.

Değiştirme şekli: 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

Yeniden başlatma ile etkinleşir: sudo update-grub && sudo reboot

Genellikle yeni başlayanların kullandığı 2C1G VPS için örnek verirsek, temiz bir sistemin değişiklik öncesi ve sonrası bellek alanı aşağıdaki gibidir. 366MB ve 562MB arasındaki farkın oldukça büyük olduğu görülüyor.

# Değişiklik öncesi
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          707180      340772      123400        2624      358872      366408
Swap:              0           0           0

# Değişiklik sonrası
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          903788      341656      451380        2616      251032      562132
Swap:              0           0           0

2C4G VPS için değişiklik öncesi ve sonrası bellek alanı aşağıdaki gibidir. 3.1GB ve 3.5GB arasındaki fark.

# Değişiklik öncesi
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3512696      377672     2870944        1260      415116     3135024
Swap:              0           0           0

# Değişiklik sonrası
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3905912      374468     3408304        1252      270508     3531444
Swap:              0           0           0

Kdump hakkında daha fazla bilgi

Kdump, Linux sisteminde çekirdek çökmesi yaşandığında sistemin bellek durumunu yakalamak için kullanılan bir çekirdek çökme döküm mekanizmasıdır. kexec teknolojisine dayanır, kexec bir Linux çekirdeğinin BIOS başlatma sürecinden geçmeden başka bir Linux çekirdeğini başlatmasına izin verir, bu sayede sistem çökmeden sonra yeni bir çekirdeğe (yakalama çekirdeği veya crashkernel olarak da bilinir) hızlıca yönlendirilebilir.

Sistem ölümcül bir hata ile karşılaştığında ve çekirdek hatası (kernel panic) tetiklendiğinde, şu an çalışan çekirdek (ana çekirdek olarak da bilinir) kexec kullanarak önceden hazırlanmış yakalama çekirdeğini yükler ve sistemin bellek içeriğini belirli bir konuma kaydeder, örneğin belirli bir disk bölümüne veya başka bir makineye ağ üzerinden gönderilir. Bu şekilde kaydedilen bellek görüntü dosyası (vmcore veya kdump dosyası) daha sonra analiz edilebilir ve geliştiricilere veya sistem yöneticilerine çökmenin nedenini bulmada yardımcı olabilir.

Kdump işlevini etkinleştirmek için genellikle yakalama çekirdeği için önceden ayrılmış bir bellek kısmı gerekir, böylece ana çekirdek çökse bile bu bellek etkilenmez ve yakalama çekirdeğinin normal çalışmasını ve bellek dökümünü tamamlamasını sağlar. Kdump’u yapılandırmak ve kullanmak genellikle önyükleyici program ayarlarını, çekirdek parametrelerini ve vmcore dosyalarını kaydetmek için uygun bir depolama konumu ayarlamayı içerir.