Ses kapalıyken RAM sınırına ulaşırsak Linux işletim sisteminde ne olur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Linux işletim sistemi, RAM sınırına (OOM - Out Of Memory) ulaşıldığında OOM Killer'ı başlatır. Bu, çekirdek tarafından çalışan ve önemli miktarda bellek kullanan bir veya birkaç işlemi seçip sonlandıran bir süreçtir; böylece kaynaklar serbest bırakılır ve sistemin donması önlenir. İşlemlerin sonlandırılması, bellek tüketimi, işlem önceliği (oom_score), var olma süresi ve diğer faktörler dikkate alınarak yapılan bir heuristik temelindedir. Sesi kapatmak bu mekanizmayı etkilemez.
Sınırın aşılması ve OOM Killer'ın çalışmasıyla ilgili sonuçlar değişkenlik gösterebilir:
- Kritik bir işlemin sonlandırılması: Eğer OOM Killer, sistemin çalışması için kritik olan bir işlemi (örneğin, kabuk veya grafik ortamını kontrol eden bir işlemi) seçerse, bu sistem kararlılığını veya kilitlenmesini tetikleyebilir ve yeniden başlatma gerekebilir.
- Kullanıcı işleminin sonlandırılması: Eğer bir kullanıcı işlemi (örneğin, bir web tarayıcısı, metin düzenleyici) sonlandırılırsa, kullanıcı bu uygulamada kaydedilmemiş verileri kaybeder.
- Geçici kaynak serbestliği: Bir veya birkaç işlemin başarılı bir şekilde sonlandırılması durumunda, sistem geçici olarak bellekten rahatlar ve normal çalışmasına devam edebilir, ta ki tekrar bellek yetersizliği yaşanana kadar.
- Sistem günlüklerine kaydetme: OOM Killer'ın etkinleştirilmesi ve sonlandırılan işlemler hakkında bilgiler sistem günlüklerine (örneğin, dmesg veya journalctl) kaydedilir; bu, yöneticinin bellek yetersizliğinin nedenini analiz etmesine olanak tanır.
Günlükleri kontrol etmek için örneğin şu komutlar kullanılabilir:
# Çekirdek mesajlarının sonuncularını, OOM Killer bilgileri dahil olmak üzere görüntüle
dmesg | grep -i 'out of memory'
# OOM ile ilgili journald kayıtlarını görüntüle
journalctl -xe | grep -i 'out of memory'
OOM Killer davranışını /proc/sys/vm/oom_kill_allocating_task ve /proc/<pid>/oom_score_adj üzerinden değiştirebilirsiniz.
# OOM Killer'ı devre dışı bırak (çoğu durumda önerilmez)
echo 0 > /proc/sys/vm/oom_kill_allocating_task
# PID 1234 olan bir işlem için oom_score_adj katsayısını ayarla
# Daha yüksek değer, işlemin sonlandırılma olasılığını artırır
echo 1000 > /proc/1234/oom_score_adj
# Daha düşük değer, işlemin sonlandırılma olasılığını azaltır
echo -1000 > /proc/1234/oom_score_adj