Sobes.tech
Middle+

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