라즈베리 파이 가상 메모리(SWAP) 크기 늘리기
평상시에는 라즈베리 파이에서 빌드해도 전혀 문제가 없던 프로젝트인데 갑자기 별다른 에러 코드도 없이 컴파일이 중단되었다. 이런 황당한 일이! 소스 코드의 오류가 아닌데 빌드가 되지 않다니.... 몇 번 재시도하면서 살펴보니 조금 사이즈가 큰 소스 코드를 컴파일하는 시점에 시스템 메모리가 거의 소모되면서 컴파일이 중단되는 것이었다.
"g++: fatal error: 죽었음 signal terminated program cc1plus" 또는
"g++: fatal error: killed signal terminated program cc1plus" 메시지가 나올 뿐 별다른 힌트를 제공하지 않았다. 찾아보니 메모리 부족으로 인한 현상이 많다고 한다. 실제 메모리를 늘려주면 좋겠지만 가상 메모리를 늘리는 쉬운 방법이 있다.
sudo dphys-swapfile swapoff
일단 위의 명령으로 스왑 메모리 사용을 중지시킨다.
"sudo vi /etc/dphys-swapfile" 등의 명령으로 설정 파일을 열어 CONF_SWAPSIZE 항목을 원하는 값으로 수정한다. 위의 그림은 100M로 지정되어 있는 모습이고 1G로 바꾸려면 1024를 입력하면 된다.
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
sudo reboot
크기를 조정한 다음에는 setup으로 가상 메모리를 재설정하고 가상 메모리를 가동시킨다음 시스템을 재가동시켜 보아서 가상 메모리가 제대로 올라왔는지 확인하면 된다.
위의 그림처럼 "grep SwapTotal /proc/meminfo" 명령으로 가상 메모리의 크기를 확인할 수 있다.
메모리를 확장한 다음에 다시 빌드해 보니 위의 그림처럼 컴파일러가 사용하는 메모리는 여전히 많았지만 넉넉한 VM 크기 덕분에 빌드는 정상적으로 수행되었다.