virtualization / knowledge
Docker VM에 AMD GPU 드라이버와 VAAPI 붙이기
iGPU를 VM으로 넘겼어도 게스트 안에 드라이버가 없으면 /dev/dri/renderD128 이 생기지 않는다. Jellyfin 같은 게 트랜스코딩에 쓰려면 여기까지 와야 한다.
Debian이라 AtiHowTo를 따랐는데, 문서에 나오는 패키지를 다 넣을 필요는 없었다.
$ apt-get install firmware-amd-graphics libgl1-mesa-dri
두 개면 됐다.
| 패키지 | 역할 |
|---|---|
firmware-amd-graphics |
GPU 펌웨어. 이게 없으면 커널이 장치를 초기화하지 못한다 |
libgl1-mesa-dri |
OpenGL 하드웨어 가속용 Mesa DRI 드라이버. VAAPI 트랜스코딩에 쓰인다 |
넣지 않은 것
문서에 함께 나오지만 이 환경에서는 필요 없었던 것들이다.
| 패키지 | 언제 필요한가 |
|---|---|
libglx-mesa0 |
Xorg 서버의 GLX 모듈 |
xserver-xorg-video-all |
Xorg 비디오 드라이버 메타패키지 |
mesa-vulkan-drivers |
Vulkan 기반으로 트랜스코딩할 때 |
앞의 둘은 데스크탑 환경용이다. 이 VM은 Docker만 돌리는 헤드리스라 Xorg 자체가 없다. Vulkan도 VAAPI로 충분해서 넣지 않았다.
확인
$ ls -la /dev/dri
renderD128 이 보이면 드라이버가 붙은 것이다.
모니터링
GPU가 실제로 일하고 있는지 보려면 amdgpu_top 이 편하다. Debian 저장소에는 없어서 릴리스에서 받아 설치한다.
$ wget https://github.com/Umio-Yasuno/amdgpu_top/releases/download/v0.11.0/amdgpu-top_0.11.0-1_amd64.deb
$ sudo apt install ./amdgpu-top_0.11.0-1_amd64.deb
트랜스코딩이 CPU로 떨어지고 있는지 GPU를 쓰고 있는지 여기서 바로 확인된다.