기본적으로 Raspberry PI는 내장된 램 자체은 일반 컴퓨터에 비하면 적은 편이다. 2015년에 출시된 Raspberry PI 3 B 모델을 기준으로 해도 램은 1GB 정도이다. 그래서 GUI를 띄우거나, 뭔가 Memory에 Load해야 할 데이터가 많은 경우에는 느려지거나, 심지어는 그냥 뻗는 경우가 발생하기도 한다. 그래서 보통은 상대적으로 용량이 큰 disk 영역의 일부를 swapfile로 만들어서 램 대용으로 쓰기도 한다.
내가 겪은 문제 중 하나는 Movidius에서 나온 Neural Computing Stick용 SDK와 이에 필요한 example을 설치하다 보니, 중간에 뻗는 현상이 발생하고, 이와 더불어 build fail까지 나타나는 현상이였다. 그런데 유심히 보니, 램이 딸려서 그렇기도 하고, 기본적으로 설정된 swap size(살펴보면 알겠지만 default가 100MB로 되어 있다.)를 쓰다보니 그랬었다. 그래서 해당 사이즈를 늘리고, 다시 진행하니 정상적으로 진행되는 것을 확인했다.
사실 이전에 리눅스에서 swap size를 변경하려면 파티션 설정을 바꾸고 조금 복잡한 과정이 필요했지만, 이제는 systemctl내의 dphys-swapfile 를 통해서 간단하게 swap size를 변경할 수 있다. 방법은 다음과 같다.
1) text editor를 sudo로 실행해서 /etc/dphys-swapfile 내의 변수(CONF_SWAPSIZE)를 변경해준다.
: sudo vi /etc/dphys-swapfile
: CONF_SWAPSIZE=1024로 수정
2) systemctl를 통해 해당 service를 restart시켜준다.
: sudo /etc/init.d/dphys-swapfile restart
여기까지 하고 조금 기다리면, 창으로 OK라는 메세지가 뜨는데 이때부터 다시 설치 과정을 수행하면 정상적으로 진행된다.
그런데 유념해야 할 것은, swap file 자체가 ram 대용으로 disk 영역을 쓰는 것인 만큼, access가 더 빈번하게 발생하게 된다는 것이다. 특히 raspberry pi와 같이 flash 기반의 저장장치를 활용하는 보드는 read/write access가 빈번할수록 그 성능(또는 수명)이 급격하게 저하되므로, 항상 swap size를 늘린 상태로 동작할 필요는 없다. 물론 이 부분은 사용자 특성에 따른 차이가 존재하므로, 어느 것을 선택할지는 개개인의 자유다.
talkingaboutme.tistory.com/entry/RPI-Swap-size-%EB%8A%98%EB%A6%AC%EA%B8%B0