Linux

Linux: 커널 메모리 관리 파라미터

dewstream 2025. 7. 28. 08:00
728x90

※ Linux: Kernel MemoryParameters.

 

안녕하세요. 듀스트림입니다.

 

오늘은 리눅스에서 시스템 레벨의 메모리 관리 파라미터에 대한 내용입니다.

 

본 포스팅은 PostgreSQL 등 DBMS 서버 관점에서 작성했습니다.


1. vm.overcommit_memory

• 설명

  • 프로세스의 메모리 할당(overcommit) 정책을 정하는 핵심 커널 파라미터
    • 0: Heuristic, 커널이 추정하여 오버커밋 결정(기본값)
    • 1: 항상 오버커밋 허용
    • 2: 물리 메모리+스왑, overcommit_ratio 기준으로 오버커밋 한계 설정, 엄격 제한

• 확인 방법

cat /proc/sys/vm/overcommit_memory

# or
sysctl -n vm.overcommit_memory

 

• 설정 방법

vi /etc/sysctl.d/60-postgresql.conf
# 아래 내용 추가
vm.overcommit_memory = 2
# 변경사항 적용
sudo sysctl -p /etc/sysctl.d/60-postgresql.conf

# or
sudo sysctl --system

 

• PostgreSQL 서버 권장 설정

  • 2: 물리 메모리+스왑, overcommit_ratio 기준으로 오버커밋 한계 설정, 엄격 제한
    • 엄격한 오버커밋 제한을 통해 PostgreSQL postmaster 프로세스가 Out-Of-Memory(OOM) Killer 대상이 되는 상황을 줄이고 DB 서버의 예기치 않은 다운/장애를 예방할 수 있습니다.

2. vm.overcommit_ratio

• 설명

  • vm.overcommit_memory=2인 경우 최대 커밋 가능한 메모리를 Swap + (RAM × overcommit_ratio %)로 산정

• 확인 방법

cat /proc/sys/vm/overcommit_ratio

 

• 설정 방법

위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용

vm.overcommit_ratio = 80

 

• PostgreSQL 서버 권장 설정

  • 80
    • RAM의 최소 20%는 커널·OS 캐시 용도로 확보하여 PostgreSQL의 메모리 커밋 압박을 완화하여 안정성을 높입니다.
    • 커뮤니티에서도 80~90% 범위 설정을 권장합니다. (워크로드 규모·스왑 크기에 따라 overcommit_ratio를 ±5% 범위에서 미세 조정)

3. vm.panic_on_oom

• 설명

  • 시스템 메모리 부족(OOM) 상황에서 커널의 동작 방식 지정
    • 0: OOM-Killer가 문제 프로세스만 종료(기본)
    • 1: OOM시 조건부 패닉(특정 조건에서만)
    • 2: 즉시 시스템 패닉(전체 서버 다운)

 

확인 방법

cat /proc/sys/vm/panic_on_oom

 

 

설정 방법

위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용

vm.panic_on_oom = 0

 

PostgreSQL 서버 권장 설정

  • 0: OOM-Killer가 문제 프로세스만 종료(기본)
    • 메모리 부족이 발생해도 DB 프로세스(postmaster 등)만 종료되고 OS와 나머지 서비스는 계속 동작합니다.
      서버 전체 장애 및 불필요한 재부팅, 서비스 중단을 예방할 수 있습니다.

4. vm.oom_kill_allocating_task

설명

  • OOM 시 어느 프로세스를 kill할지 선정하는 정책 지정
  • 0: 커널이 가장 적합한(메모리 사용량, 중요도 등) 프로세스를 선정해 종료
  • 1: 메모리 할당을 시도하다 실패한(가해) 프로세스를 즉시 종료

확인 방법

cat /proc/sys/vm/oom_kill_allocating_task

 

설정 방법

위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용

vm.oom_kill_allocating_task = 0

 

 

PostgreSQL 서버 권장 설정

  • 0: 커널이 가장 적합한(메모리 사용량, 중요도 등) 프로세스를 선정해 종료
    • 백그라운드 대용량 작업(정렬 등)처럼 메모리 사용량이 일시적으로 큰 워커 프로세스가 우선적으로 종료될 확률이 높아집니다. postmaster 등 핵심 프로세스를 보호하여 DB 서비스의 가용성과 지속성을 높일 수 있습니다

+ 임시 변경 방법 (재부팅하면 원래 설정 값으로 돌아옵니다.)

echo 80 | sudo tee /proc/sys/vm/overcommit_ratio

 

++ 적용 전후 점검 스크립트

for k in overcommit_memory overcommit_ratio panic_on_oom oom_kill_allocating_task; do
    printf '%-30s %s\n' $k $(cat /proc/sys/vm/$k)
done

오늘은 여기까지~

 

728x90

'Linux' 카테고리의 다른 글

Linux: 터미널 세션 기록  (1) 2025.11.14
Linux: rpm 다운로드 방법  (1) 2025.08.04
Linux: 기본 디렉터리 구조  (2) 2025.07.22
Linux: OpenSSH 사용법  (0) 2025.02.24
Linux: chage 사용법  (0) 2025.02.23