VPS'deki ayrılmış belleği serbest bırakma
Categories:
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.