리눅스 choom 명령어 활용법: OOM Killer 점수 조정과 프로세스 보호 가이드

개요

리눅스 시스템에서 메모리 부족 현상이 발생했을 때 프로세스의 희생 순위를 결정하는 OOM(Out of Memory) 점수를 제어하는 choom 명령어의 사용법을 다룹니다. 실행 중인 프로세스의 OOM 점수 조회부터 우선순위 변경, 신규 프로세스 보호 설정까지 터미널에서 실습하며 쉽게 익힐 수 있습니다.

1. choom 명령어 개요 및 도구 설치 확인

choom 명령어 실습과 프로세스 관리를 위해 필수 패키지인 util-linux와 procps를 설치합니다.

apt-get update -qq && apt-get install -y util-linux procps

choom 명령어는 리눅스 커널의 OOM Killer가 프로세스를 강제 종료할 때 참조하는 점수(oom_score_adj)를 확인하거나 조정합니다.
--help 옵션을 실행하여 지원하는 주요 옵션과 사용 형식을 확인합니다.
⚙️ [주요 옵션]

-p, --pid : OOM 점수를 확인하거나 변경할 대상 프로세스의 ID(PID)를 지정합니다.
-n, --adjust : OOM Killer 점수 조정값(-1000 ~ 1000)을 지정합니다.
-h, --help : 도움말 정보를 출력합니다.
-V, --version : 프로그램의 버전 정보를 출력합니다.

choom –help

2. 실행 중인 프로세스의 OOM Score 확인하기

OOM 점수 조회 및 조정 실습을 위해 10분 동안 유지되는 테스트용 백그라운드 프로세스를 구동하고자 sleep 600 & 명령어를 실행합니다.

sleep 600 &

방금 실행한 백그라운드 프로세스의 PID를 찾아 TARGET_PID 변수에 저장한 뒤, choom -p 명령어로 해당 프로세스의 현재 OOM 점수 조정값(oom_score_adj)을 확인합니다.
별도의 조정을 거치지 않은 일반 프로세스는 기본 설정값인 0이 출력됩니다.

TARGET_PID=$(pgrep -f ‘sleep 600’ | tail -n 1) && choom -p $TARGET_PID

choom 명령어가 출력한 결과가 실제 커널 설정과 일치하는지 확인하기 위해 /proc 파일시스템의 oom_score_adj 파일을 직접 조회합니다.
조회 결과 choom으로 확인한 값과 동일하게 0이 출력되어 커널 파라미터가 정상적으로 반영되어 있음을 확인할 수 있습니다.

TARGET_PID=$(pgrep -f ‘sleep 600’ | tail -n 1) && cat /proc/$TARGET_PID/oom_score_adj

3. choom 명령어로 프로세스 OOM 점수 변경하기

실행 중인 대상 프로세스의 OOM 점수 조정값을 변경하기 위해 -n 옵션으로 500을 지정하고 sudo 권한으로 choom 명령어를 실행합니다.
OOM 점수 조정값(oom_score_adj)을 양수로 높여 설정하면 시스템 메모리가 부족할 때 해당 프로세스가 우선적으로 강제 종료 대상이 됩니다.

TARGET_PID=$(pgrep -f ‘sleep 600’ | tail -n 1) && sudo choom -n 500 -p $TARGET_PID

변경된 OOM 점수 조정값이 정상적으로 적용되었는지 확인하기 위해 choom -p 명령어로 대상 프로세스를 다시 조회합니다.
출력 결과 기존의 기본값인 0에서 지정했던 500으로 점수가 성공적으로 변경되어 즉시 반영된 것을 확인할 수 있습니다.

TARGET_PID=$(pgrep -f ‘sleep 600’ | tail -n 1) && choom -p $TARGET_PID

4. OOM 점수를 지정하여 프로세스 실행 및 정리

중요 프로세스를 시작할 때부터 OOM Killer의 강제 종료 대상에서 제외되도록 점수 조정값을 -1000으로 사전 지정하여 백그라운드에서 실행합니다.
OOM 점수 조정값을 최저치인 -1000으로 설정하면 메모리가 극단적으로 부족한 비상 상황에서도 커널이 해당 프로세스를 종료하지 않고 안전하게 보호합니다.

sudo choom -n -1000 – sleep 10 &

방금 실행한 프로세스의 PID를 찾아 TARGET_PID 변수에 저장한 뒤, choom -p 명령어를 실행하여 사전 지정된 OOM 점수 조정값을 조회합니다.
조회 결과 의도한 대로 -1000이 반영되어 프로세스 시작과 동시에 OOM 보호 설정이 성공적으로 적용되었음을 확인할 수 있습니다.

TARGET_PID=$(pgrep -f ‘sleep 10’ | tail -n 1) && choom -p $TARGET_PID

모든 실습이 완료되었으므로 이전 섹션에서 테스트용으로 구동했던 백그라운드 프로세스를 정리하기 위해 pkill -f 'sleep 600' || true 명령어를 실행합니다.
시스템 자원이 불필요하게 낭비되지 않도록 실습에 사용된 잔여 프로세스를 안전하게 종료하여 환경을 정돈합니다.

pkill -f ‘sleep 600’ || true

지금까지 choom 명령어를 활용해 OOM Killer 점수를 확인하고 중요 프로세스를 안전하게 보호하는 방법을 간단하게 살펴보았습니다.
운영 환경에 맞춰 주요 서비스의 우선순위를 적절히 설정하여 메모리 부족 상황에서도 안정적인 시스템을 유지해 보세요.