このクラスターでは、メモリーなどのプロセスリソースを制限しています(memory.limit_in_bytes
)。
結局のところ、これもLinuxカーネルのOOMキラーを介して処理されると思います(ソースコードを読むと、そのように見えます)。
プロセスが終了する前にシグナルを取得する方法はありますか?(SGEの-notify
オプションと同様に、プロセスが強制終了さqsub
SIGUSR1
れる前に送信されます。)
私は/dev/mem_notify
ここについて読みましたが、それを持っていません-最近他に何かありますか?私もこれを読んで、ある程度関連性があるようです。
少なくとも小さなスタックトレースと他の有用なデバッグ情報をダンプできるようにしたいのですが、メモリを解放することで回復できるかもしれません。
私が現在使用している回避策の1つは、この小さなスクリプトです。このスクリプトは、上限(95%)に近いかどうかを頻繁にチェックし、上限に近い場合、プロセスにを送信しますSIGUSR1
。Bashでは、このスクリプトをバックグラウンド(cgroup-mem-limit-watcher.py &
)で開始しているため、同じcgroup内の他のprocを監視し、親Bashプロセスが停止すると自動的に終了します。