Di cluster kami, kami membatasi sumber daya proses kami, misalnya memori ( memory.limit_in_bytes
).
Saya pikir, pada akhirnya, ini juga ditangani melalui pembunuh OOM di kernel Linux (sepertinya itu dengan membaca kode sumber ).
Apakah ada cara untuk mendapatkan sinyal sebelum proses saya terbunuh? (Sama seperti -notify
opsi untuk SGEqsub
, yang akan mengirim SIGUSR1
sebelum prosesnya terbunuh.)
Saya membaca di /dev/mem_notify
sini tapi saya tidak memilikinya - apakah ada sesuatu yang lain saat ini? Saya juga membaca ini yang sepertinya agak relevan.
Saya ingin setidaknya dapat membuang jejak stack kecil dan mungkin beberapa info debug berguna lainnya - tapi mungkin saya bahkan dapat memulihkan dengan membebaskan beberapa memori.
Satu solusi yang saat ini saya gunakan adalah skrip kecil ini yang sering memeriksa apakah saya tutup (95%) hingga batasnya dan jika demikian, ia mengirimkan proses a SIGUSR1
. Di Bash, saya memulai skrip ini di latar belakang ( cgroup-mem-limit-watcher.py &
) sehingga ia mengawasi procs lain di cgroup yang sama dan berhenti secara otomatis ketika proses induk Bash mati.