süreç OOM katili / cgroups tarafından öldürülmeden önce sinyal almak


11

Kümemizde, süreç kaynaklarımızı kısıtlıyoruz, örn. Bellek ( memory.limit_in_bytes).

Sonunda, bu aynı zamanda Linux çekirdeğindeki OOM katili tarafından da ele alınmaktadır ( kaynak kodunu okuyarak benziyor ).

Sürecim öldürülmeden önce sinyal almanın bir yolu var mı? (Tıpkı -notifyseçeneğiyle SGE enqsub gönderecek, SIGUSR1süreç öldürdü önce.)

/dev/mem_notify Burada okudum ama bende yok - bugünlerde başka bir şey var mı? Ben de okumak bu şekilde alakalı görünüyor.

En azından küçük bir yığın izleme ve belki de diğer bazı yararlı hata ayıklama bilgileri dökmek istiyorum - ama belki de bazı bellek serbest bırakarak kurtarabilirsiniz.

Bir Şu anda edilir kullanıyorum geçici çözüm bu küçük senaryoyu ben yakın (% 95) sınıra kadar kalırsam hangi sıklıkla kontrol eder ve eğer öyleyse, o süreç a gönderir SIGUSR1. Bash'de, bu betiği cgroup-mem-limit-watcher.py &aynı gruptaki diğer procs'ları izlemesi ve arka Bash işlemi bittiğinde otomatik olarak kapanması için background ( ) içinde başlıyorum .


Herhangi bir otorite kaynağı bulamadım, ya da OOM katilini belirli bir süreç için manuel olarak (fikri test etmek için) çağırmanın bir yolunu bulamadım , ancak bulduğumdan, OOM katilinin sadece SIGTERM gönderdiğini, bu yüzden bu sinyal için bir işleyici.
Hi-Angel

5
@ Hi-Angel: Linux kaynak kodundan SIGKILL gönderiyor gibi görünüyor.
Albert

@ Albert Kaynak kodunu okuduktan sonra, OOM Killer'in doğrudan bir SIGKILL sinyali göndereceğini düşünüyorum.
andy

Yanıtlar:



5

OOM katili, aksi takdirde sorunlu programın devam etmesini sağlamak için karşı üretken olacağından bir SIGKILL gönderir.

Bu, bir sürecin ne zaman öldürüleceğini bilmek için kesinlikle bir yol olmadığı anlamına gelir.

Bu tür sorunları yönetmek genellikle programlarda veya yapılandırmalarında düzeltmeler yapılması anlamına gelir. Bazen, sistemin yapılandırmasına bağlı olarak, takas alanını artırmak, bu tür ciddi önlemlerden kaçınmak için işletim sistemine daha fazla bellek yönetimi esnekliği sağlayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.