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_scoredeğ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_scoredeğ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.