패스잇
CS 기초 · 심화

시스템의 물리 메모리가 고갈될 위기에 처했을 때, 리눅스 OOM Killer는 어떤 기준으로 프로세스를 선택하여 종료시키며, OOM Killer의 동작 방식이 애플리케이션의 안정성과 가용성에 미치는 영향은 무엇입니까? OOM Killer의 동작을 제어하거나 회피할 수 있는 OS 수준의 설정 및 설계 기법에 대해 논하시오.

힌트 · `oom_score`, `oom_score_adj`를 통한 우선순위 제어, `overcommit_memory` 설정, 그리고 메모리 할당 실패 시 애플리케이션의 견고한 처리 방안을 포함해야 합니다.

OOM 점수oom_score_adj메모리 압박가용성graceful shutdown

모범답안

네, 말씀하신 질문에 대해 답변드리겠습니다.

리눅스 OOM Killer는 시스템 메모리가 부족할 때 프로세스를 강제 종료하여 시스템을 보호하는 역할을 합니다. 종료 대상 선정 기준은 주로 oom_score라는 값인데, 이 값은 프로세스의 메모리 사용량, 실행 시간, 권한 등을 종합적으로 고려하여 계산됩니다. oom_score가 높을수록 종료될 가능성이 커집니다.

OOM Killer는 시스템 전체의 안정성을 확보하지만, 중요한 애플리케이션이 예기치 않게 종료될 수 있어 가용성에 영향을 미칠 수 있습니다.

OOM Killer의 동작을 제어하기 위해 oom_score_adj 값을 조정할 수 있습니다. 이 값을 낮추면 해당 프로세스의 종료 우선순위를 낮출 수 있습니다. 또한, /proc/[pid]/oom_adj 파일을 직접 수정하여 프로세스별 OOM 점수를 조절할 수도 있습니다.

OS 수준에서는 vm.overcommit_memory 설정을 통해 메모리 할당 정책을 변경할 수 있습니다. 애플리케이션 수준에서는 메모리 할당 실패를 감지하고 graceful shutdown을 수행하여 데이터 손실을 최소화하는 것이 중요합니다. 예를 들어, 메모리 할당에 실패했을 때 예외를 처리하고, 현재 상태를 저장한 후 안전하게 종료하는 방식을 고려할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 운영체제 면접 질문

← 운영체제 면접 질문 전체 보기