토픽 50 / 85·메모리 관리
OOM Killer (Out Of Memory Killer)
OOM Killer (Out Of Memory Killer)
Linux 커널에서 시스템 메모리가 고갈되었을 때 메모리 확보를 위해 프로세스를 선택하여 강제 종료하는 메커니즘으로, oom_score를 기반으로 희생 프로세스 선정
목적: 시스템 안정성, 메모리 고갈 대응, 중요 프로세스 보호
특징: oom_score 기반, 휴리스틱 선택, 커널 레벨 동작, 설정 가능
OOM 발생 조건: 물리 메모리 + 스왑 모두 고갈, 더 이상 회수할 페이지 없음
oom_score 계산 요소
- •메모리 사용량: 많이 사용할수록 높은 점수
- •프로세스 수명: 오래된 프로세스는 낮은 점수
- •자식 프로세스: 자식이 많으면 높은 점수
- •nice 값: nice 값이 높으면(낮은 우선순위) 높은 점수
oom_score_adj: 사용자 조정값(-1000 ~ +1000)
- •-1000: OOM Killer 면제
- •+1000: 우선 종료 대상
- •/proc/[pid]/oom_score_adj로 설정
동작 과정
Overcommit: vm.overcommit_memory 설정, 0(휴리스틱), 1(항상 허용), 2(제한)
장점: 시스템 크래시 방지, 자동 복구, 설정 가능
단점: 중요 프로세스 종료 가능, 예측 어려움, 데이터 손실
적용사례: Linux 서버, 컨테이너(cgroup OOM), 클라우드
비교: OOM Killer(강제종료) vs 스왑(디스크사용) vs 메모리압축(CPU사용)
연관: 메모리 관리, cgroup, 가상 메모리, 스왑, 프로세스 관리