In unserem Cluster beschränken wir unsere Prozessressourcen, z memory.limit_in_bytes
. B. Speicher ( ).
Ich denke, am Ende wird dies auch über den OOM-Killer im Linux-Kernel erledigt (sieht so aus, als würde man den Quellcode lesen ).
Gibt es eine Möglichkeit, ein Signal zu erhalten, bevor mein Prozess abgebrochen wird? (Genau wie die -notify
Option für SGEsqsub
, die gesendet wird, SIGUSR1
bevor der Prozess beendet wird.)
Ich habe /dev/mem_notify
hier darüber gelesen , aber ich habe es nicht - gibt es heutzutage noch etwas anderes? Ich habe auch gelesen , das die etwas relevant zu sein scheint.
Ich möchte in der Lage sein, zumindest einen kleinen Stack-Trace und möglicherweise einige andere nützliche Debug-Informationen zu sichern - aber vielleicht kann ich mich sogar erholen, indem ich etwas Speicher freigebe.
Eine Problemumgehung, die ich derzeit verwende, ist dieses kleine Skript, das häufig prüft, ob ich nahe (95%) am Limit bin, und in diesem Fall den Prozess a sendet SIGUSR1
. In Bash cgroup-mem-limit-watcher.py &
starte ich dieses Skript in background ( ), damit es nach anderen Prozessen in derselben cgroup sucht und automatisch beendet wird, wenn der übergeordnete Bash-Prozess stirbt.