ROKO
[Linux] OOM killer 본문
728x90
Out Of Memory killer 의 약자
리눅스에서 시스템 메모리가 부족할때 커널은 사용자 실행 파일 중 메모리를 많이 쓰는 app kill 한다.
이때 kill 기준은 oom_badeness() 메서드에서 nice와 score를 기반으로 하는데
/proc/${pid}/oom_score
위 명령어를 통해 현재 점수를 알 수 있다.
만약 자신의 실행 파일이 Out Of Memory Error 와 함께 Kill 당했을때 사유를 알고 싶다면 이 명령어를 실행해보자.
dmesg | grep -E -i -B100 'killed process'
어떤 pid가 어떠한 사유로 kill 당했는지의 정보가 출력된다. (stackoverflow link)
OOM Killer log는 /var/log/message 에 남겨져 있다.
해결법
사실 OOM Killer을 비활성화 시킬수는 없다. 사용자 파일 하나 돌리려다가 시스템 전체가 붕괴될수는 없으니 말이다.
하지만 OOM Killer를 대상에서 제외시키는 방법이 있는데, oom score를 조작하는 방식이다.
sudo echo -17 > /proc/${pid}/oom_adj
sudo echo -1000 > /proc/${pid}/oom_score_adj
그전에 자신의 코드가 비효율적으로 메모리를 많이 사용하지는 않는지 코드를 돌리기에 하드웨어 사양이 적절한지를 파악하는게 우선이 되어야 한다.
728x90
Comments