우분투나 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
크론탭 맨 마지막에 위 구문을 넣어 일주일 마다 한번 일요일 영시에 실행되게 설정하면 일주일 마다 한번씩 자동으로 스왑 메모리를 초기화 합니다.
1 댓글. Leave new
여기는 라즈베리파이4b 2GB 라즈베리파이 사용자분들는 저거 거의 다 안먹히실텐데요 지는
sudo service dphys-swapfile stop && sudo service dphys-swapfile start
커맨드썼고 스왑빈도 수정불가능하고 crontab의 경우 배치파일 굳이 만들줄필없이 crontab도 그냥-e가 아닌 sudo crontab -e로 열어야했고 멀해도 안되다 자포자기한끝에 /root뭐시기대신 sudo service dphys-swapfile stop && sudo service dphys-swapfile start이거써서 겨우 적용했네요 현재는
45 19 * * 1,2,3,4 sudo service dphys-swapfile stop && sudo service dphys-swapfile start
이뜻는
1. 매주 월(1),화(2),수(3),목(4) 19시 45분마다
2. sudo service dphys-swapfile stop && sudo service dphys-swapfile start라는 커맨드 실행하겄다 그뜻입니다. 정 못믿겄음 journalctl -b갖다 확인해보시등가요
conky깔믕 스왑메모리뿐만아니라 온도나 cpu 메모리 ssd 네트워크 사용량등등 실시간으로 확인가능합니다