Ubuntu 18.04 Swap Memory 늘리기

황동준·2021년 7월 26일
0

docker나 가상환경 실행시에, 메모리가 모자르다고 하면서 갑자기 프로그램이 안돌아가고, jupyter lab에 연결이 끊기고 컴퓨터가 정지되는 기이한 현상을 볼 때가 있다. (특히 Embedded System에서 자주 일어남..)

이럴 때는 또 ubuntu 자체에서 warning을 띄우게 되는데, memory가 부족하다고 뜬다.

메모리 많은데 왜 뜨는거지? 라고 의문점이 드는 사람들에게 이 글을 전한다.

docker에서는 마운트된 메모리를 이용하게 되는데, (왜냐하면 독립된 가상환경이기 때문) 당신의 ssd 전체를 마운트 하지 않는 이상 docker는 swap memory를 이용하게 된다.

free -m

이 명령어로 swap memory 확인해보면, 일반적인 임베디드 컴퓨터에서는 0일 것이다. (할당을 안해줘서..)
난 할당을 해줘서 8GB가 있다고 뜬다.

Mount 폴더에 swap file 만들기

그러면 할당을 해줘야 한다. 다음과 같은 명령어를 연속으로 붙여넣는다.

일단 4GB 만 할당해보겠다.

sudo systemctl disable nvzramconfig
sudo fallocate -l 4G /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap
sudo swapon /mnt/4GB.swap

물론 shell file로 만들어도 된다.

echo "sudo systemctl disable nvzramconfig
sudo fallocate -l 4G /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap
sudo swapon /mnt/4GB.swap" > make_swap.sh

chmod +x make_swap.sh
./make_swap.sh

근데 이거 컴퓨터 킬 때마다 이래야 한다. 또한 나중에 까먹고 swap 생성안했다가, commit 했던 docker를 키면 메모리 모자르다고 컴퓨터 바로 멈출 수도 있다.

그래서 /etc/fstab에..

/etc/fstab은 처음에 컴퓨터 킬 떄 마운트 시킬 수 있는 파일들을 넣는 것이다.
따라서 미리 /mnt에 저장해 놓은 4GB.swap file을 여기에 넣는 것이다. 다음과 같이 맨 아래에 코드를 입력한다. (위의 root는 기본적으로 적혀있다.)


꼭 swap file이라고 type을 지정해주자. <dump> <pass>의 경우 모두 0, 0이고 options는 defaults로 해주며, mount point는 swap으로 지정한다.
이후

sudo reboot

해주면 앞으로 컴퓨터를 킬 때마다 4GB 씩 swap으로 간다.

profile
부담없이 기록하기

0개의 댓글