데브옵스/클라우드 서비스

[AWS] 프리티어 사용 시 필수 설정 - 스왑 메모리 할당

SparkIT 2025. 2. 8. 20:24

AWS 숙달을 위해 프리티어로 비용을 거의 지불하지 않은 채로 EC2를 사용하시는 분들이 꽤 많으실 겁니다. 이때 가장 문제인 것은 EC2 스펙인데요. 아무래도 프리티어는 무료 서비스다 보니 굉장히 스펙이 낮은 EC2만 사용할 수 있습니다. 현재 프리티어로 제공되는 EC2 인스턴스 유형은 t2.micro로 메모리가 1GiB만 제공됩니다. 이로 인해 웬만한 애플리케이션은 메모리 부족으로 인해 해당 인스턴스에서 실행 시 문제가 됩니다. 개발한 애플리케이션을 실행하면 갑자기 EC2가 멈추는 현상을 경험하신 분들이 꽤 있을 겁니다. 이때는 조금 더 비싸고 좋은 인스턴스를 사용하는 것도 방법이 될 수 있지만, 프리티어를 유지한 채 문제를 해결하는 방법은 스왑 메모리 활용일 것입니다.

 

스왑 메모리(Swap memory)란?

스왑 메모리(Swap Memory)는 RAM이 부족할 때, 디스크의 일부를 임시 메모리(RAM처럼)로 사용하는 기술입니다. 쉽게 말해, 메모리가 부족하면 하드디스크(HDD/SSD)를 RAM처럼 활용하는 것입니다.

 

스왑 메모리 동작 원리

스왑 메모리는 자주 사용되지 않는 메모리(RAM의 데이터를) 디스크로 옮기고, 필요한 데이터를 다시 불러오는 방식으로 동작합니다.

  1. RAM이 꽉 차면
    자주 사용하지 않는 데이터를 스왑 영역(디스크)로 이동
    RAM 공간 확보

  2. 필요할 때 다시 가져옴 (Page-In / Page-Out)
    스왑된 데이터를 다시 RAM으로 불러옴
    하지만 디스크 속도가 느려서 성능 저하가 발생 가능

또한 이 과정에서 무조건 RAM이 가득 차야만 스왑 메모리를 사용하지는 않습니다. swappiness 값에 따라 스왑 메모리 사용 정도를 조절할 수도 있습니다.

❗️ swappiness 란?

기본적으로 리눅스는 swappiness 값에 따라 스왑을 얼마나 자주 사용할지 결정합니다. 기본값은 60으로 설정되어 있습니다. 즉, RAM이 약 60% 사용될 때 스왑을 적극적으로 사용하기 사작하는 것이죠. 이를 통해 메모리가 가득 차기 전에 미리 스왑 메모리를 활용할 수 있습니다.

 

스왑 메모리 설정 방법

1. 스왑 파일 생성

 sudo dd if=/dev/zero of=/swapMem bs=128M count=16
  • dd: 파일을 복사하고 변환하는 유틸리티입니다.
  • if=/dev/zero: /dev/zero는 무한히 0을 생성하는 장치 파일입니다. 이 파일에서 데이터를 읽습니다.
  • of=/swapMem: 새로 만들 스왑 파일의 경로를 지정합니다.
  • bs=128M: 블록 크기를 128MB로 설정합니다.
  • count=16: 총 16개의 블록을 생성하여 총 2GB(128MB * 16)의 스왑 파일을 생성합니다.

2. 파일 권한 설정

 sudo chmod 600 /swapMem

위에서 설정한 스왑 파일에 권한 설정

3. 스왑 파일을 스왑 공간으로 설정

 sudo mkswap /swapMem

위에서 설정한 스왑 파일을 스왑 공간으로 설정

4. 스왑 활성화

 sudo swapon /swapMem

5. 스왑 상태 확인

 sudo swapon --show