GNU/Linux >> Belajar Linux >  >> Linux

Terima Sinyal Sebelum Proses Dibunuh Oleh Oom Killer / Cgroups?

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


Linux
  1. Debian – Pembunuh Oom Tidak Bekerja Dengan Benar, Menyebabkan Os Beku?

  2. Setel Penyesuaian Pembunuh Oom Untuk Proses Saat Memulai?

  3. Jumlah maksimum utas per proses di Linux?

  1. Menemukan proses mana yang dibunuh oleh pembunuh OOM Linux

  2. Apa yang mematikan proses saya dan mengapa?

  3. Penggunaan memori dari proses saat ini di C

  1. Malloc di linux tanpa komitmen berlebihan

  2. Bagaimana mencegah pergi ke SWAP?

  3. Bagaimana penggunaan memori dilaporkan di Linux?