리눅스 SWAP 메모리 초기화 하는 방법

우분투나 CentOS 계열을 설치할때 일반적으로 파티션 설정 부분에서 Swap 파티션 용량을 자동으로 지정해 리눅스를 설치하게 되는데요.

Swap은 컴퓨터에 설치된 RAM의 가용량을 넘을 경우 스왑 파티션 공간을 메모리 처럼 활용하는 기술로 윈도우의 가상 메모리와 같은 역할을 합니다.

메모리 용량이 적은 경우 스왑이 빈번하게 일어나지만 시스템이 빵빵한 경우 시스템에서 스왑을 잘 사용하진 않게 되는데요.

하지만 메모리 용량이 충분히 남아 있음에도 간혹 Swap 메모리를 사용하는 경우가 있으며 사용된 스왑 공간이 좀처럼 비워지지 않는 경우에는 관리자가 직접 스왑 메모리를 초기화 할 수 있습니다.

SWAP 메모리 확인하기

top - 18:12:33 up 55 days, 18:27,  1 user,  load average: 0.10, 0.03, 0.01
Tasks:  95 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   994924 total,   108896 free,   168024 used,   718004 buff/cache
KiB Swap:  1989628 total,  1982380 free,     7248 used.   655656 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0  225428   7224   4740 S   0.0  0.7   0:22.28 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.17 kthreadd
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H

우선 시스템에서 사용하는 메모리와 스왑 공간을 확인합니다. 간단하게 top 명령어로 리소스를 모니터링 할 수 있습니다.

              total        used        free      shared  buff/cache   available
Mem:            971         163         106           0         701         640
Swap:          1942           7        1935

또는 free -m 명령어를 이용해 메모리 사용량만 간략하게 확인할 수 있습니다.

Swap 부분에서 used 가 스왑 사용량을 나타내며 mem은 실제 메모리 사용량인데 남은 메모리가 충분함에도 약간의 스왑 메모리를 사용하고 있습니다.

# swapoff -a && swapon -a

swapoff -a 명령어는 스왑 메모리 사용을 중지 시키는 명령어 이고 swapon -a는 활성화 하는 옵션으로 스왑을 내렸다 다시 시작해 스왑 메모리를 반환 하는데 사용합니다.

스왑 메모리가 클 경우 swapoff를 하는데 시간이 조금 걸릴 수도 있으니 터미널에서 경로가 표시될 때 까지 잠시 기다리면 되겠습니다.

스왑 메모리 사용 빈도 조정하기

# cat /proc/sys/vm/swappiness
60

만일 실제 메모리가 넉넉함에도 스왑 메모리를 자주 사용하는 경우 스왑 사용 빈도를 조절할 수 있습니다. 우분투 같은 경우 가용도가 60으로 설정되어 있는데 100가 최대이며 높을 수록 적극적으로 사용하겠다는 설정입니다.

반대로 0으로 설정하는 경우 최대한 스왑을 사용하지 않겠다는 설정으로 자주 스왑을 일으킨다면 아래 명령어와 같이 사용 빈도를 조정할 수 있습니다.

# vi /etc/sysctl.conf

에디터로 /etc/sysctl.conf 파일을 엽니다.

vm.swappiness = 0

맨 아래줄에 위 구문을 추가합니다.

# echo 0 > /proc/sys/vm/swappiness

위 명령어로 변경점을 적용하면 되니다.

Cron에 스왑 메모리 초기화 스크립트 추가하기

스왑 메모리를 주기적으로 비우고 싶은 경우 스크립트를 만들어 크론에 추가하면 편리하게 스왑 메모리를 초기화 할 수 있습니다.

# mkdir /root/batch
# vi /root/batch/clean_swap.sh

루트 디렉토리 하위에 batch 디렉토리를 만들고 clean_swap.sh 이름으로 vi 에디터를 연 다음 swapoff -a && swapon -a를 추가합니다.

# chmod +x /root/batch/clean_swap.sh

위 명령어로 생성한 스크립트가 실행될 수 있게끔 퍼미션을 조정합니다.

# crontab -e

크론탭을 에디터로 엽니다.

0 0 * * 0 /root/batch/nginx_proxy_cache_cleaner.sh

크론탭 맨 마지막에 위 구문을 넣어 일주일 마다 한번 일요일 영시에 실행되게 설정하면 일주일 마다 한번씩 자동으로 스왑 메모리를 초기화 합니다.

같은 주제의 글

댓글

이메일 주소는 공개되지 않으며 댓글에 하나 이상의 URL이 포함될 경우 관리자 승인 후 공개됩니다.

댓글은 운영 정책에 따라 관리됩니다. (링크)