Elastic Beanstalk 의 Docker 에서 Cuda가 지원되지 않는 문제

Elastic Beanstalk 에서 docker 런타임으로 배포시 g4dn 인스턴스임에도 컨테이너 안에서 gpu를 쓸 수 없는 문제를 발견했다.
구글링 결과 찾은 유일한 글(https://stackoverflow.com/q/59035690)의 솔루션은

  1. Deep Learning AMI 를 사용
  2. 환경변수에 NVIDIA_VISIBLE_DEVICES=all, NVIDIA_DRIVER_CAPABILITIES=compute,utility 넣기
  3. .ebextensions 에 command 를 추가해서 /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh 안에 있는 docker run -ddocker run --runtime=nvidia -d 로 replace 하기

그러나 최신 EB 환경 안에서는 00run.sh 를 찾을 수 없었고 배포도 실패했다.
EB 인스턴스 안에서 docker run 이라는 텍스트가 포함된 모든 파일을 / 부터 다 find 했는데도 그 비슷한 배치파일 하나 찾을 수 없었다.
아마도 EB 배포방식이 조금 달라졌나보다.

한참 헤매다가 docker default-runtime 을 nvidia 로 설정할 수 있는 방법(http://haanjack.github.io/docker/2018/02/21/nvidia-docker2-runtime.html)을 찾아서 /etc/docker/daemon.json 를 overwrite 하는 방법으로 문제를 해결했다.

 

Deep Learning AMI (Amazon Linux 2) Version 36.0 (ami-0550df853e1f98198) 에서
환경변수 NVIDIA_VISIBLE_DEVICESNVIDIA_DRIVER_CAPABILITIES 를 설정하고
.ebextensions/01-nvidia-docker.config 를 아래와 같이 작성했더니 잘 작동했다.

참고로 이미 다른 컨테이너가 띄워진 인스턴스에서는 ebextensions 를 작성해서 deploy 해도 바로 적용되진 않고 ec2 인스턴스에 접속해서 docker service 를 restart 해야 default runtime이 적용이 된다.
처음 만들어지는 인스턴스에는 restart를 할 필요 없이 바로 적용된다.
(첫 배포시에는 인스턴스를 다 죽이고 처음부터 배포하는게 편하다 ㅎㅎ)

critical process died 문제 해결 기록

 

문제상황

시스템 복원 이후 critical process died 블루스크린 발생

  1. 윈도우 부팅 안됨
  2. 안전모드 부팅 안됨
  3. 시스템 복원 시도. 이 드라이브에서 시스템 보호를 사용해야 합니다 오류
  4. sfc /scannow 시도. windows 리소스 보호에서 요청된 작업을 수행할 수 없습니다 오류
  5. 각종 dism 복구 시도. Error: 2 발생 (The system cannot find the file specified)
  6. chkdsk /r 시도. 이상없음

 

예상되는 문제

윈도우 시스템 레지스트리의 손상

 

해결

부팅 옵션 또는 윈도우 부팅 usb 에서
문제해결 - 고급옵션 - 명령프롬프트
진입

  1. 기존 레지스트리 백업
    mkdir C:\configBak
    copy C:\Windows\System32\config C:\configBak
    
  2. config 파일 이전버전으로 복구
    dir C:\Windows\System32\config
    
    왜인지는 모르겠지만 SOFTWARE.iobit 파일이 있었음
    용량을 보니 SOFTWARE 파일의 백업본일것이라고 추정
    SOFTWARE 또는 SYSTEM 파일에 문제가 있었을 것이라고 생각했기 때문에 overwrite 시도 (실패시 C:\configBak 에 있는 파일로 다시 복구해야함)
    copy C:\Windows\System32\config\SOFTWARE.iobit C:\Windows\System32\config\SOFTWARE
    
    이후에 dism 이 동작했음
  3. dism 으로 시스템 복원 기능 복구 시도
    dism /image=C:\ /cleanup-image /revertpendingactions
    
    이후 시스템 복원 기능이 정상동작했음
    따로 다른시점으로 복원하지는 않았으나 재부팅시 정상적으로 윈도우 진입이 가능함

Virtualbox: install guest additions on RHEL 8 / CentOS 8

 

성공적으로 설치 후에도 게스트 디스플레이 크기 자동 조정 옵션이 비활성화 되어있다면 머신 디스플레이 설정에서 아래와같이 VBoxVGA 로 바꾼다.

잘못된 설정이라고 알림이 뜨지만 무시하면 된다.

+ Recent posts