개발 기록
>[AWS] EC2 프리티어 메모리 부족 해결 - SWAP Memory 본문
AWS EC2 프리티어 이용중 메모리가 부족하여 build를 실패하는 상황이 생겼다. 이럴때 SWAP 메모리를 활용하면 메모리 부족문제를 임시로 해결할 수 있다. (실제로는 메모리를 추가하는 것이 성능에 좋다.)
■
1. 가상 메모리와 SWAP 메모리 개념
▶ 가상 메모리란
가상 메모리 메모리 관리 기법의 하나로, 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 가상 메모리는 활성 RAM과 DASD 상의 비활성 메모리로 결합되어 있다.
▶ SWAP 메모리란
실제 메모리 RAM이 가득 찼지만, 더 많은 메모리가 필요할 때 디스크 공간을 가상 메모리로 사용하는 것이다.
즉, 메모리가 부족한 경우에는 일부 프로세스의 데이터를 메모리에서 디스크로 옮기고, 필요할 때 다시 불러와서 사용한다. 일반적으로 하드 드라이브나 SSD를 사용하며 RAM 보다는 속도가 느리다.
-비활성화된 프로세스 메모리: 물리메모리 -> 가상 메모리
-활성화된 프로세스 메모리: 가상메모리->물리 메모리
■
2. SWAP 메모리 사용법
(1) SWAP 파일 생성
▶ SWAP 공간 크기 계산(생성하려는 SWAP 파일 크기)

▶ dd 명령어를 사용하여 SWAP 파일을 만든다.
- bs : 블록 크기
- count : 블록 수
스왑 파일의 크기는 블록 크기 값에 count 값을 곱한 값이다.
* AWS에서 제공하는 프리티어 EC2 는 기본적으로 1GB 메모리이므로 2GB(128MB * 16) swap 파일을 만들어 할당한다.
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
(2) SWAP 파일 권한 설정
: SWAP 파일에 읽기 및 쓰기 권한을 부여한다.
$ sudo chmod 600 /swapfile
(3) 리눅스의 SWAP 영역 설정
: Linux 스왑 영역을 설정한다.
sudo mkswap /swapfile
(4) SWAP 메모리 사용
: SWAP 파일을 SWAP 공간에 추가하여 SWAP 파일을 즉시 사용할 수 있도록 한다.
$ sudo swapon /swapfile
: swap 설정 확인 명령어
$ sudo swapon -s
(5) 서버 Reboot 시 SWAP 메모리 자동 활성화
: /etc/fstab 파일을 편집하여 부팅 시 SWAP 파일을 시작하도록 한다.
$ sudo vi /etc/fstab
: 파일 끝에 아래 줄을 추가한다.
/swapfile swap swap defaults 0 0
(6) SWAP 메모리 확인
free -h

■
3. SWAP 메모리 주의사항
1. SWAP 메모리는 물리적 메모리보다 느리기 때문에, 성능 저하가 발생할 수 있다.
2. SWAP 메모리를 사용하면 디스크 I/O가 증가하여 디스크 수명을 단축시킬 수 있다. 따라서 SWAP 메모리를 사용하는 경우, 디스크 I/O가 많은 작업을 수행하지 않는 것이 좋다.
참고
https://repost.aws/knowledge-center/ec2-memory-swap-file