메모리 스왑, 왜 필요한가?
아마 학생 레벨에서는 많이들 AWS 프리티어 계정으로 EC2를 사용할 것이다. 하지만, 프리티어를 사용하다보면 램 부족 현상을 자주 맞이하게 된다. 특히, EC2내에서 gradle build라도 하게 되면 답답하게 오래 걸린다. 또한, 서버가 다운되기도 한다. 왜냐하면, EC2 프리티어는 1GB 메모리밖에 제공하지 않기 때문이다. 반면에, 스토리지 공간은 30GB로 꽤 넉넉하게 준다.
그럼 이렇게 넉넉한 HDD 공간을 가지고 있는데, 쓸데없이 비워둘 것인가? 이걸 활용해야지 않겠는가? 그래서 쓰는 것이 메모리 Swap이다. 메모리가 부족할 경우, HDD의 일정공간을 RAM처럼 사용하는 기술이다.
실제로 AWS 공식문서에도 이와 관련된 내용이 기술되어 있다.
Swap Space 계산하기
우리에게 적절한 Swap Space는 얼마일까? Swap Space는 우리 실제 메모리 용량에 비례하여 마련해야 된다.
RAM 2GB 이하 : RAM 용량의 2배, (Ex : 1GB RAM일 경우, Swap Space는 2GB)
RAM 2GB 초과, 32GB 미만 : 4GB + (RAM - 2GB), (Ex: 3GB RAM일 경우, Swap Space는 5GB)
RAM 32GB 이상 : RAM 용량의 1배, (Ex : 32GB RAM일 경우, Swap Space는 32GB)
일반적으로, 프리티어는 1GB이므로 2GB로 잡고 들어가면 된다.
메모리 Swap하기
상술된 AWS 공식문서를 기준으로 진행하였다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
우선, Swap 메모리를 할당한다. 이렇게 하면 128 메가씩, 16개 공간을 할당하는 것이므로 우리가 원하는 2GB를 차지하게 된다.
sudo chmod 600 /swapfile
그 다음, 스왑파일에 대하여 권한을 업데이트 한다.
sudo mkswap /swapfile
Linux의 스왑 영역을 설정한다.
sudo swapon /swapfile
메모리 스왑을 시작한다. 여기까지 했으면 메모리 스왑이 완료됐다. 이제 잘 됐는지 확인해볼 차례이다.
sudo swapon --show
위 명령어를 통해서 메모리 스왑이 제대로 됐는지 확인해본다. 또는
free -h
위 명령어를 통해서 확인해볼 수도 있다.
이렇게 스왑 영역이 뜨면 성공이다!
메모리 Swap 자동 활성화
그런데 이렇게 하면 문제점이 있다. EC2 인스턴스를 재부팅하면, 다시 초기화하기 때문에 우리가 위에 했던 과정이 사라진다. 따라서, 재부팅하더라도 자동으로 Swap이 될 수 있도록 활성화 설정을 해야된다.
sudo vim /etc/fstab
위 명령어를 통해 편집기 화면으로 들어갑니다.
/swapfile swap swap defaults 0 0
그리고 파일 맨 마지막 줄에 위와 같은 한줄을 추가하고, wq를 쳐서 저장하고 종료합니다.
'BackEnd > AWS' 카테고리의 다른 글
[AWS] AWS Lambda의 활용 (8) | 2024.11.09 |
---|---|
[AWS] Lambda를 이용한 Image Resizing (0) | 2024.07.07 |