
스왑 영역을 왜 설정해야 할까?
- 성능이 좋은 VM 서버를 대여하기란 쉽지 않다. 대부분 취준생들은 로컬 컴퓨터보다 성능이 낮은 컴퓨터를 무료로 빌려 사용하게 된다(Freetier). aws freetier의 경우 약 1기가의 메모리 공간을 받게 되는데, 이 경우 간단한 토이프로젝트를 배포(app, db)하기만 해도 서버가 쉽게 뻗어버릴 수 있다.
- top 명령어로 서버가 죽기 전 자원 사용량을 참고한 결과 CPU 사용량이 100%에 달해도 서버는 동작하지만 MEMORY 사용량이 100%에 가까워질수록 느려지고, 메모리 사용량을 초과하면 서버가 죽게 된다. 자원이 열악한 서버에서는 스왑 영역을 설정하기만 해도 서버의 가용성과 성능 두마리 토끼를 한 번에 잡게된다. 물론 디스크 공간이 충분하다는 전제하에 말이다.
- 하지만, 운영체제에서 배웠듯이 스왑 영역이 크다고해서 더 빨라지는 건 아니다. 오히려 메모리보다 디스크 장치는 CPU에서 멀리 떨어져 있기에 스왑 영역에 많이 저장할수록 속도는 느려진다. 리눅스 운영체제마다 권장되는 스왑 영역 크기가 있다. 대략 현재 메모리 크기의 2배 정도 크기를 스왑 영역 크기로 지정한다. (참고: https://phoenixnap.com/kb/swap-space#:~:text=If there is less than,most%2C double the RAM amount.)
- 개인적으로 서버는 가용성이 중요하다고 생각하기 때문에 스왑 영역을 설정하여 메모리를 많이 사용하는 상황에도 대처할 수 있게 해야 한다고 생각한다. 그럼 스왑 영역 늘리는 방법을 알아보자!
스왑 영역 늘리기 (Ubuntu)
1. 먼저 현재 사용중인 스왑 영역을 파악
sudo free
- -m, -g 옵션을 이용해 메가바이트, 기가바이트 단위로 확인할 수 있다.
2. 현재 사용가능한 디스크 공간 파악
df -h
- -h는
—-human-readable
의 줄임 명령어다. 디스크에서 나온 수치를 읽기 쉽게 해준다.
- 디스크에 스왑 영역으로 사용할 수 있는 충분한 크기가 있는지 파악한다.
3. 스왑 파일 생성하기 (fallocate)
fallocate [option] filename
sudo fallocate -l 4G /swapfile
4. 생성한 스왑 파일을 시스템 스왑 영역으로 지정하기
5. 스왑 영역을 영구히 사용하기
- 위에서 한 설정은 서버 재부팅 시에 설정이 초기화된다. /etc/fstab 파일에 위에서 선언한 스왑 파일을 추가하여 계속해서 사용할 수 있도록 한다.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- /etc/fstab 필드를 간단히 알아보자.
- [첫번째 필드] 파일 시스템 장치, [두번째 필드] 마운트 포인트, [세번째 필드] 파일 시스템 종류, [네번째 필드] 마운트 옵션, [다섯번째 필드] 시스템 덤프 여부, [여섯번째 필드] 부팅 시 파일시스템 검사할 순서 지정 필드
- 옵션을 차례로 설명하면, /swapfile을 통해 파일의 경로를 지정하고 스왑 파일은 마운트가 필요 없으므로 none으로 한다. 파일 시스템 종류과 마운트 옵션 모두 swap으로 하는 것이고 덤프 옵션을 0으로 하여 비활성화 한다. 스왑 파일은 부팅 시 초기화되므로 검사 옵션을 0으로 하여 비활성화한다.
- 사용할 수 있는 옵션에 대한 자세한 설명은
man fstab
으로 확인할 수 있다.
참고 자료
