クラスタでは、メモリ()などのプロセスリソースを制限しますmemory.limit_in_bytes
。
私の考えでは、これは最終的にLinuxカーネルのOOMキラーを介しても処理されます(読み取りを通して)。ソースコード)。
私のプロセスが終了する前に信号を受信する方法はありますか? (-notify
オプションと同様に上海金取引所qsub
、SIGUSR1
プロセスが終了する前に送信されます。 )
私は読んだ/dev/mem_notify
ここしかし、私はそうではありませんでした。もう他に何もありませんか?私も読んだこれこれはやや関連があるようです。
私は少なくとも小さなスタックトレースと他の有用なデバッグ情報をダンプできるようにしたいと思います。ただし、一部のメモリを解放して回復することもできます。
現在使用されている回避策の1つは次のとおりです。この小さなスクリプトSIGUSR1
制限(95%)に近いかどうかを頻繁に確認し、その場合は終了時に自動的に終了を送信しますcgroup-mem-limit-watcher.py &
。
ベストアンサー1
cgroupのメモリ使用量がしきい値を超えると通知を受け取るように登録できます。原則として、しきい値を実際の制限より低い適切なポイントに設定すると、信号を送信したり他のアクションを実行したりできます。
望むより:
https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt