OOM Killer 개요
OOM(Out of Memory) Killer는 Linux 커널의 메모리 관리 메커니즘으로, 시스템 메모리와 스왑 공간이 부족할 때 동작합니다. 커널이 메모리 할당 요청을 만족할 수 없을 때 강제로 프로세스를 선택하여 종료하여 시스템이 완전히 다운되는 것을 방지합니다.
프로세스 선택 알고리즘
mm/oom_kill.c의 oom_badness() 함수는 각 프로세스에 대해 점수를 계산합니다. 점수는 RSS(상주 집합 크기), 스왑 사용량, 페이지 테이블 오버헤드 등을 고려하며, oom_score_adj 값으로 조정 가능합니다. -1000으로 설정하면 절대 종료되지 않으며, +1000으로 설정하면 가장 먼저 선택됩니다.
커널 매개변수 제어
panic_on_oom 파라미터는 OOM 발생 시 동작을 제어합니다. 0(기본값)이면 OOM Killer가 프로세스를 종료하고, 1이면 커널 패닉이 발생합니다. /proc/[pid]/oom_score와 /proc/[pid]/oom_score_adj를 통해 런타임에 프로세스 우선순위를 조정할 수 있습니다.