반응형

리눅스 시스템에서는 메모리가 부족해 질 경우 발생하는 오류 (메모리 할당 오류 등)를 방지하기 위해 SWAP 영역을 사용한다.

SWAP 영역이란 메인 메모리의 공간이 부족해 질 때 메모리의 일부를 디스크에 저장하고, 사용하는 순간에만 잠시 메인 메모리(RAM)에 불러와 사용하기 위한 공간이다.

 

디스크에 생성된 많은 파티션 중 하나가 SWAP영역으로 지정되어 있다.

 

 

OS, 커널의 정책마다 SWAP 영역으로 내보낼 메모리 를 선정하는 방법이 다르며, 어느 시점에 내려보낼지에 대한 설정도 제각각 이다.

 

또한 같은 OS, 커널을 사용한다 하더라도 시스템 설정값의 변경을 통해 서로 다른 결과가 나타날 수 있다.

 

 

top을 통해 확인한 RAM/SWAP 영역의 사용량

 

위의 사진과 같이 아직 메인 메모리의 공간이 남아 있음에도, 미리 SWAP영역으로 내보내는 경우가 발생하기도 한다.

 

CentOS에서는 스왑에 대한 정책을 sysctl 또는 /etc/sysctl.conf 을 통해 변경할 수 있다.

 

 

스왑 적극도 값 변경 및 적용 (swappiness)

 

메모리 스왑 횟수를 줄여, 스왑시 발생하는 속도 저하를 해결하기 위해선 swappiness 값을 변경해야 한다.

이는 swap을 얼마나 적극적으로 활용하는지 대한 설정으로 이 설정은 vm.swappiness 값의 변경을 통해 지정된다.

 

값의 범위는 0~100으로 되어 있으며, 0이면 스왑을 사용하지 않고, 100이면 적극적으로 스왑을 사용하게 된다.

값에 대한 설명은 아래 표와 같다.

설명
0 스왑하지 않음
1~99

값이 커질수록 적극적으로 스왑

작아질 수록 소극적으로 스왑

100 적극적으로 스왑

스왑 적극도의 기본 설정 값

기본 설정은 60으로 되어있으며, 적극도는 설정된 값에 비례한다.

 

sysctl 명령어를 이용하여 설정하면, 현재 부팅된 시스템에 임시적으로 적용된다.

sysctl vm.swappiness=10 #원하는 설정값 입력, 예제에선 10

위의 값을 쉘에 입력하면 된다.

swappiness 설정 예제

영구적으로 적용하기 위해선, /etc/sysctl.conf 에 입력한다.

 

/etc/sysctl.conf

 

반응형

댓글을 달아 주세요