티스토리 뷰

docker container 내부에서 pytorch 로 기계학습을 진행하는 도중에 아래와 같은 에러메시지가 발생되는 경우가 있습니다.

RuntimeError: DataLoader worker (pid 13881) is killed by signal: Bus error.

위 에러는 도커로 컨테이너를 생성하게 되면 호스트와 컨테이너는 공유하는 메모리 공간이 생기게 되는데 이 공간에 여유가 없어서 발생되는 에러입니다. 리눅스의 경우에는 컨테이너 내부에서 아래와 같이 df  명령어로 확인이 가능합니다.

(base) root@2a48ab5fd651:~/ml# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         427G   59G  347G  15% /
tmpfs            64M     0   64M   0% /dev
tmpfs            95G     0   95G   0% /sys/fs/cgroup
/dev/bcache0     15T  108G   14T   1% /raid
/dev/sda3       427G   59G  347G  15% /etc/hosts
shm             2.0G  579M  1.5G  29% /dev/shm
tmpfs            95G   12K   95G   1% /proc/driver/nvidia
tmpfs            19G  2.3M   19G   1% /run/nvidia-persistenced/socket
udev             95G     0   95G   0% /dev/nvidia1
tmpfs            95G     0   95G   0% /proc/asound
tmpfs            95G     0   95G   0% /proc/acpi
tmpfs            95G     0   95G   0% /proc/scsi
tmpfs            95G     0   95G   0% /sys/firmware

shared memory 를 나타내는 shm 부분을 살펴보면 되는데 컨테이너를 생성하면 기본으로 128MB가 할당됩니다. 호스트의 메모리에 따라 shm 을 충분히 설정할 수 있는데 컨테이너 생성시에 --shm-size 옵션을 통해 지정할 수 있습니다. 위에 예제는 --shm-size 2G 로 지정한 경우입니다.

누군가에게는 도움이 되셨기를 바랍니다.

'개발 > docker' 카테고리의 다른 글

RuntimeError: DataLoader worker (pid 13881) is killed by signal: Bus error.  (0) 2019.04.15
이미지, 컨테이너 export, import  (0) 2016.12.12
네트워크 관리  (0) 2016.12.01
docker A to Z  (0) 2016.12.01
docker 운영 최소 환경  (0) 2015.11.20
댓글
댓글쓰기 폼