Swap Space 할당(vm.swappiness 설정)

현스·2025년 4월 25일

ORACLE STUDY

목록 보기
8/14

Linux 커널 파라미터 vm.swappiness 설정

vm.swappiness는 0부터 100까지의 값을 가지는 Linux 커널 파라미터로, 애플리케이션 데이터(익명 페이지 형태)를 물리 메모리에서 디스크의 가상 메모리로 스왑(swap) 하는 동작을 제어합니다. 이 값을 조정함으로써 스왑을 최소화할 수 있습니다.

  • 값이 높을수록(예: 60~100) 비활성 프로세스가 더 적극적으로 스왑되며,

  • 값이 낮을수록(예: 0~10) 스왑이 덜 발생하고, 대신 파일 시스템 버퍼가 먼저 비워집니다.

대부분의 시스템에서는 기본적으로 vm.swappiness 값이 60으로 설정되어 있습니다.
그러나 이는 Hadoop 클러스터 환경에는 적합하지 않습니다.
메모리가 충분한 상황에서도 프로세스가 스왑되는 경우가 있어, 시스템 데몬에 대한 GC(Garbage Collection) 지연이 발생할 수 있고, 이는 시스템 안정성과 성능 저하로 이어질 수 있습니다.

Cloudera는 RHEL 커널 버전이 2.6.32-642.el6 이상일 경우,
vm.swappiness 값을 1에서 10 사이(가능하면 1) 로 설정하여 최소한의 스왑이 이루어지도록 권장하고 있습니다.


To view your current setting for vm.swappiness, run:

cat /proc/sys/vm/swappiness

To set vm.swappiness to 1, run:

sudo sysctl -w vm.swappiness=1

To ensure persistence of the vm.swappiness value after reboot:

echo 'vm.swappiness=1' > /etc/sysctl.d/90-cloudera-swappiness.conf


🔹 Swap의 개념과 역할, 그리고 적정 용량 판단

1. Swap이란?

Swap은 Linux에서 물리 메모리(RAM)가 부족할 경우, 디스크의 일부를 가상 메모리처럼 활용하기 위한 영역이다. 운영체제는 메모리 압박이 발생했을 때, 사용 빈도가 낮은(비활성) 메모리 페이지를 swap 공간으로 밀어내고, 그만큼의 물리 메모리를 확보한다. 이 과정을 통해 시스템이 메모리 부족으로 인한 크래시를 피할 수 있도록 한다.

2. Swap의 동작 방식

예를 들어, 시스템에 60GB의 RAM과 8GB의 swap이 설정되어 있다고 가정한다. 일반적으로 대부분의 데이터는 RAM 상에서 처리되지만, 메모리 사용량이 임계치에 도달하면 커널은 비활성 데이터를 swap으로 이동시킨다. 이 때 디스크 I/O가 발생하게 되고, 이는 RAM보다 속도가 느리기 때문에 성능 저하의 주요 원인이 될 수 있다.

또한 JVM 기반 애플리케이션의 경우, 메모리가 swap으로 밀려나면 GC(Garbage Collection) 성능이 급격히 저하될 수 있으며, 이는 전체 시스템 성능에 악영향을 준다.

3. Swap의 필요성과 장단점

장점 시스템이 메모리 부족 상황에서도 동작 지속 가능
단점 디스크 기반이라 속도가 느림. 자주 사용되면 성능 저하 유발
비고 메모리가 충분한 시스템에서는 거의 사용되지 않도록 설정하는 것이 이상적

4. Swap 용량 8GB는 적절한가?

일반적으로 메모리가 32GB 이상인 서버에서는 swap을 거의 사용하지 않도록 설정하는 것이 권장된다. Cloudera, Red Hat, Oracle 등 주요 벤더에서도 "메모리가 충분할 경우 swap은 최소한으로 구성하라"고 권장하고 있으며, Hadoop 또는 Oracle DB와 같은 시스템에서는 swap 사용이 GC 지연 및 데몬 응답 저하를 유발할 수 있기 때문이다.

60GB RAM 시스템에서 swap을 8GB 설정하는 것은 실무적으로 적절한 수준이며, 백업적인 용도로만 활용되도록 관리하는 것이 이상적이다.

5. Swap 관련 설정 및 확인 방법

  • 현재 swap 사용량 확인
free -m
swapon -s

  • 현재 swappiness 값 확인
cat /proc/sys/vm/swappiness
  • swappiness 값 조정 (예: 1로 설정하여 최소화)
sysctl -w vm.swappiness=1

-영구 설정 (예: /etc/sysctl.conf에 추가)

vm.swappiness = 1

6. 결론

서버의 swap 공간은 비상용 완충장치로 이해하는 것이 좋으며, 메모리가 충분한 서버에서는 최대한 적게, 또는 아예 사용되지 않도록 관리하는 것이 중요하다. 성능 민감한 시스템에서는 vm.swappiness를 1로 설정해 swap 발생 빈도를 최소화하고, 필요시 swap 공간을 완전히 비활성화하는 방안도 고려할 수 있다.


profile
˗ˋˏ O R A C L E ˎˊ˗

0개의 댓글