개발 기록

>[AWS] EC2 프리티어 메모리 부족 해결 - SWAP Memory 본문

인프라

>[AWS] EC2 프리티어 메모리 부족 해결 - SWAP Memory

1z 2024. 3. 13. 15:00

 

 

 

 

AWS EC2 프리티어 이용중 메모리가 부족하여 build를 실패하는 상황이 생겼다. 이럴때 SWAP 메모리를 활용하면 메모리 부족문제를 임시로 해결할 수 있다. (실제로는 메모리를 추가하는 것이 성능에 좋다.)

 

1. 가상 메모리와 SWAP 메모리 개념  

▶ 가상 메모리란
가상 메모리 메모리 관리 기법의 하나로, 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 가상 메모리는 활성 RAM과 DASD 상의 비활성 메모리로 결합되어 있다.

▶ SWAP 메모리란
실제 메모리 RAM이 가득 찼지만, 더 많은 메모리가 필요할 때 디스크 공간을 가상 메모리로 사용하는 것이다.
즉, 메모리가 부족한 경우에는 일부 프로세스의 데이터를 메모리에서 디스크로 옮기고, 필요할 때 다시 불러와서 사용한다. 일반적으로 하드 드라이브나 SSD를 사용하며 RAM 보다는 속도가 느리다.

-비활성화된 프로세스 메모리: 물리메모리 -> 가상 메모리
-활성화된 프로세스 메모리: 가상메모리->물리 메모리 

 


 

2. SWAP 메모리 사용법  

(1) SWAP 파일 생성 

▶ SWAP 공간 크기 계산(생성하려는 SWAP 파일 크기)

https://repost.aws/knowledge-center/ec2-memory-partition-hard-drive

 

 

▶  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