본문 바로가기

IT/리눅스

딥러닝을 위한 swap 파일생성, 크기, 위치 변경하기(SSD swap file, /dev/zero, mkswap, swapon/swapoff)

반응형

 

1. swap이란?

 

시스템 메모리가 부족하면 하드 디스크의 일부 공간을 RAM의 일부처럼 동작하게 하여 도와주는 임시 공간입니다. 

당연히 Disk를 사용하기 때문에 RAM보다 느릴 수 밖에 없습니다. 

 

리눅스 시스템을 설치하다보면 swap을 잡아주게 되어 있는데 대부분 별 신경 쓰지 않고 기본값으로 설치하면 작은 크기로 설정되게 됩니다. 

 

2. swap을 변경하는 이유 

 

딥러닝을 하다가 자주 부딛히는 문제 중 하나는 GPU 메모리 뿐아니라 host의 메모리 크기가 부족하여 대용량의 데이터를 한번에 넣어서 모델을 학습하는데 문제가 발생한다는 것입니다. 

 

딥러닝 같은 작업을 할때 HDD보다 상대적으로 빠른 SSD를 마운트 하고 SSD 내부에 대용량 swap 파일을 만들어 사용하면 엄청난(?) 체감 효과를 느끼실 수 있습니다. 

 

3. 현재 swap 상태 확인하기 

 

파일 크기를 확인해봅니다.

 free -h 

약 59G 정도의 swap을 사용하도록 설정되어 있습니다. (원래 기본 설치는 훨씬 더 작습니다)

 

파일 위치를 확인해봅니다.

 cat /proc/swaps

 

4. swap 파일 생성하기 

 

저는 SDD가 마운트된 디렉토리의 하위에 /home/docker/SSD/newswap 이름으로 약 128G swap파일을 생성해보겠습니다. (블럭단위로 계산하는 거라 정확히 입력 안하면 오차 있음...저는 대충 128G..)

당연히 128G를 생성하는데 시간이 좀 걸립니다. 

 

dd if=/dev/zero of=/home/docker/SSD/newswap bs=1024 count=128000000

 

 

dd :   블록 단위 파일 입출력 명령어 
if=FILE : 표준입력대신 지정한 파일을 입력
of=FILE : 표준 출력대신 지정된 파일에 출력
bs=BYTES : 한 번에 읽고 쓰는 바이트 크기를 지정
count=BLOCKS : 지정한 블록 수만큼 복사 

 

/dev/zero는 읽기를 위해 가능한 많은 널 문자(ASCII NUL, 0x00)를 제공하는 유닉스 계열 운영 체제의 특수 파일이며 일반적인 용도 중 하나는 데이터 스토리지를 초기화하는데 사용됩니다. 

 

자세한 설명은 다음을 참조하세요. 

https://ko.wikipedia.org/wiki//dev/zero

 

/dev/zero - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. /dev/zero는 읽기를 위해 가능한 많은 널 문자(ASCII NUL, 0x00)를 제공하는 유닉스 계열 운영 체제의 특수 파일이다.[1] 일반적인 용도 중 하나는 데이터 스토리지를

ko.wikipedia.org

 

5. 생성된 파일을 swap으로 사용하겠다고 지정 (mkswap)

블럭 단위로 정확히 계산 안하고 생성을 했더니 약 123G 정도의 파일이 생성되었습니다.

 

-rw-r--r--. 1 root root 123G  4월 18 06:11 newswap

 

이제 이 파일을 swap 영역으로 사용할 수 있도록 지정합니다.

 

mkswap /home/docker/SSD/newswap

 

 

반응형

 

6. swap 파일 활성화/비활성화 (swapon/swapoff)

이제 실제로 swap  영역으로 설정 될 수 있도록 swap 파일을 활성화 해준다. 

 

swapon /home/docker/SSD/newswap

 

 

swapon 이후 실제 swap 메모리가 늘어났는지 free 를 통해 확인 해보면 

59G에서 182G로 swap 이 확장된 것을 확인할 수 있습니다. 성공이네요. 

 

 

 

설정 내용을 항상 사용하기 위해서는 /etc/fstab 에 한줄 추가해서 저장하고 사용하시면 됩니다.

/home/docker/SSD/newswap swap                    swap    defaults        0 0

 

 

자 이제 더욱 확장된 메모리를 이용하여 답답한 딥러닝 학습을 좀더 쾌적하게 해보세요~~~ ^^

반응형