클러스터에서 프로세스 리소스 (예 : 메모리 ( memory.limit_in_bytes
))를 제한하고 있습니다 .
결국, 이것은 Linux 커널에서 OOM 킬러를 통해 처리된다고 생각합니다. 소스 코드 ).
프로세스가 종료되기 전에 신호를받을 수있는 방법이 있습니까? ( SGE의-notify
옵션 과 마찬가지로qsub
SIGUSR1
프로세스가 종료되기 전에 전송되는 .
나는 /dev/mem_notify
여기 에 대해 읽었 지만 그것을 가지고 있지 않습니다. 요즘 다른 것이 있습니까? 나도 읽었다 다소 관련 이 있는 것으로 .
최소한 작은 스택 추적과 다른 유용한 디버그 정보를 덤프 할 수 있기를 원하지만 메모리를 확보하여 복구 할 수도 있습니다.
현재 사용중인 한 가지 해결 방법은 이 작은 스크립트 입니다. 이 스크립트 는 내가 한계에 가까이 있는지 (95 %) 자주 확인하고 그렇다면 그렇다면 프로세스를 보냅니다 SIGUSR1
. Bash에서는이 스크립트를 백그라운드 ( cgroup-mem-limit-watcher.py &
) 에서 시작 하여 동일한 cgroup에서 다른 프로세스를 감시하고 부모 Bash 프로세스가 종료되면 자동으로 종료됩니다.