Di cluster kami, kami membatasi sumber daya proses kami, mis. memori (memory.limit_in_bytes
).
Saya pikir, pada akhirnya, ini juga ditangani melalui pembunuh OOM di kernel Linux (sepertinya dengan membaca kode sumber).
Apakah ada cara untuk mendapatkan sinyal sebelum proses saya dimatikan? (Sama seperti -notify
opsi untuk qsub
SGE , yang akan mengirim SIGUSR1
sebelum proses dimatikan.)
Saya membaca tentang /dev/mem_notify
di sini tetapi saya tidak memilikinya – apakah ada yang lain saat ini? Saya juga membaca ini yang tampaknya agak relevan.
Saya ingin setidaknya dapat membuang jejak tumpukan kecil dan mungkin beberapa info debug berguna lainnya – tetapi mungkin saya bahkan dapat memulihkannya dengan mengosongkan sebagian memori.
Salah satu solusi yang saya gunakan saat ini adalah skrip kecil ini yang sering memeriksa apakah saya mendekati (95%) hingga batasnya dan jika demikian, ia mengirimkan proses SIGUSR1
. Di Bash, saya memulai skrip ini di latar belakang (cgroup-mem-limit-watcher.py &
) sehingga ia mengawasi procs lain dalam cgroup yang sama dan berhenti secara otomatis ketika proses Bash induk mati.
Jawaban yang Diterima:
Dimungkinkan untuk mendaftar untuk pemberitahuan ketika penggunaan memori cgroup melampaui ambang batas. Pada prinsipnya, menyetel ambang batas pada titik yang sesuai di bawah batas sebenarnya akan memungkinkan Anda mengirim sinyal atau mengambil tindakan lain.
Lihat:
https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt