라즈베리파이3 B+ 설치가이드(14) swap 사이즈 설정

Updated:

라즈베리파이에서 모자라는 메모리 사이즈를 확보하는 방법으로 swap 사이즈를 설정해보겠습니다. swap 파일의 원하는 위치와 사이즈로 변경하는 방법을 같이 살펴보겠습니다.

1. swap이란?

swap은 리눅스에서 기본 제공하는 메모리 관리 기법입니다. 메모리가 부족한 상황을 대비해서, DRAM 장치가 아닌 하드디스크와 같은 저장장치에 별도 사이즈를 swap 영역으로 설정해두고, 메모리 처럼 사용합니다. 즉, 리눅스는 DRAM이 모두 사용하게되면, 일부 사용중인 메모리를 swap 영역으로 복사합니다.(이를 swap out으로 표현합니다.) swap 영역으로 옮겨진 사이즈만큼 DRAM 메모리를 확보할 수 있게 되는 것이지요. 하지만, 저장장치(HDD,SSD)는 메모리 속도에 비하면 매우 느리다는 점은 swap의 한계점입니다.

2. 라즈베리파이 메모리와 swap

근래 출시된 라즈베리파이3 B+ 모델이 DDR 1GB 메모리를 가졌습니다. 그리 넉넉한 메모리 사이즈는 아닙니다. 게다가 kodi 플레이어에서 GPU memory를 256MB로 늘려주는 설정을 하면 가용 메모리는 더 떨어집니다. 이로인해 아래와같이 메모리가 모두 소비되어 메모리 할당이 되지 않는다는 메시지와함께 프로그램이 실행되지 않는 경우가 발생합니다.

Virtual memory exhausted: Cannot allocate memory

free 명령어로 DRAM 메모리와 swap 메모리의 사용현황을 확인할 수 있습니다. 아래와같이 라즈베리파이는 swap 메모리를 기본으로 설정되어 있고, 사이즈는 100MB 입니다.

pi@raspberrypi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:           748M        100M        428M         10M        219M        588M
Swap:           99M          0B         99M

이 기본 설정을 원하는 사이즈로 변경해보록 하겠습니다.

3. swap 파일 위치와 사이즈 설정하기

라즈베리파이는 swap 영역을 파일(CONF_SWAPFILE)로 지정해서 사용합니다. /etc/dphys-swapfile 파일에서 swap 관련 설정을 변경할 수 있습니다. 설정파일 변경은 swap service 중지->설정파일 변경->swap service 시작 순으로 진행합니다. 아래 예시를 참고하세요.

pi@raspberrypi:~ $ sudo /etc/init.d/dphys-swapfile stop
[ ok ] Stopping dphys-swapfile (via systemctl): dphys-swapfile.service.
pi@raspberrypi:~ $ sudo vi /etc/dphys-swapfile
pi@raspberrypi:~ $ sudo /etc/init.d/dphys-swapfile start
[ ok ] Starting dphys-swapfile (via systemctl): dphys-swapfile.service.

설정 파일(/etc/dphys-swapfile)에서 편집할 내용은 아래 2가지입니다. CONF_SWAPFILE은 swap 파일의 위치입니다. SD CARD는 flash memory 특성상 잦은 write 동작은 SD card의 수명을 단축시킵니다. 따라서 HDD를 사용한다면 swap 파일은 HDD 파티션에 지정하는 것이 좋습니다. CONF_SWAPSIZE는 1GB를 사용하면 충분합니다.

CONF_SWAPFILE=/home/pi/ssd_storage/.swap/swap
CONF_SWAPSIZE=1024

설정 파일 편집을 마치고, swap service를 재시작하고, 메모리 상태를 다시 확인해봅니다. 아래와같이 swap 영역의 total이 설정한 사이즈 대로 할당이 되어 있으면 설정은 성공입니다.

pi@raspberrypi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:           748M        102M        420M         10M        225M        586M
Swap:          1.0G          0B        1.0G

더 많은 라즈베리파이 이야기 Pi Guide 보러가기


Leave a Comment