Sobes.tech
Middle

Linux nasıl hangi sürecin sonlandırılacağını belirler?

sobes.tech yapay zeka

AI'dan gelen yanıt

Linux, sistemde yeterli RAM (bellek) kalmadığında hangi süreçlerin sonlandırılacağını belirlemek için OOM (Out-Of-Memory) Killer algoritmasını kullanır. Bu algoritma, süreçleri seçerken çeşitli metrikleri analiz eder ve sistem üzerinde en az olumsuz etki yapacak süreçleri tercih eder.

OOM Killer'ın dikkate aldığı temel faktörler:

  • oom_score: Bir sürecin sonlandırılmasının sistem üzerindeki olası etkisini yansıtan sayısal bir göstergedir. Bu skor ne kadar yüksekse, sürecin sonlandırılma olasılığı o kadar artar. Bu skor, sürecin bellek kullanımı, öncelik (nice değeri) ve diğer faktörlere göre hesaplanır.
  • Kullanılan bellek miktarı: Çok bellek kullanan süreçler genellikle daha yüksek oom_score değerine sahiptir.
  • Sürecin önceliği: Daha düşük önceliğe (daha yüksek nice değeri) sahip süreçler, daha olasıdır ki sonlandırılsın.
  • Sürecin yaşam süresi: "Genç" süreçler, daha yüksek oom_score değerine sahip olabilir.
  • Ana süreç: OOM Killer, kritik sistem süreçlerini veya diğer önemli süreçlere bağlı olanları sonlandırmamaya çalışır.

Kullanıcı, belirli süreçler için oom_score_adj değerini değiştirerek OOM Killer davranışını etkileyebilir. Bu kayma, temel oom_score'a eklenir ve sürecin sonlandırılma olasılığını azaltabilir veya artırabilir.

# PID 1234 olan sürecin mevcut oom_score değerini görüntüle
cat /proc/1234/oom_score

# PID 1234 olan sürecin mevcut oom_score_adj değerini görüntüle
cat /proc/1234/oom_score_adj

# PID 1234 olan sürecin oom_score_adj değerini minimuma ayarla (-1000)
# Bu, sürecin OOM Killer tarafından neredeyse hiç sonlandırılmayacağı anlamına gelir
echo -1000 > /proc/1234/oom_score_adj

Bu şekilde, Linux, bellek yetersizliği durumunda hangi sürecin sonlandırılacağını, çeşitli faktörleri dikkate alan karmaşık bir algoritma kullanarak belirler ve sistemin kararlılığını korumayı amaçlar.