nestrilabs/virtio-nvgpu

A virtio device for sharing one NVIDIA GPU across several VMs, at bare-metal speed.

virtio-nvgpu – 여러 VM에서 하나의 NVIDIA GPU 공유

기능

  • 여러 Linux 가상 머신(VM)이 vGPU 라이선스나 PCI-패스스루 없이 동일한 물리적 NVIDIA GPU를 사용할 수 있는 virtio 장치를 제공합니다.
  • 호스트는 공식 NVIDIA 드라이버를 실행하고, 게스트 커널은 실제 NVIDIA 드라이버 호출을 호스트로 전달하는 작은 드라이버 모듈을 로드합니다. GPU 명령은 GPU 메모리에 직접 기록되므로 워크로드는 베어메탈에 가까운 속도로 실행됩니다.

중요성

  • 기존 PCI-패스스루는 GPU 전체를 하나의 VM에 할당하여 통합을 제한합니다.
  • NVIDIA의 vGPU 솔루션은 비싸고 데이터센터급 카드로 제한됩니다.
  • 기존 API 전달 솔루션(Venus, virgl)은 느리고 NVENC나 CUDA를 노출할 수 없습니다.
  • virtio-nvgpu는 드라이버 자체를 공유하여 이러한 제한을 우회하고, 높은 성능을 유지하면서 많은 게스트를 허용합니다.

성능 주장

  • RTX 3060에서 일반적인 게임 프레임(>2ms)의 프레임 렌더링 지연 시간은 네이티브 베어메탈 성능의 2% 이내입니다.
  • CPU 오버헤드는 호스트에서 직접 실행하는 것과 비슷합니다.
  • 저자들은 단일 카드에서 12개의 VM을 시연했으며, 각 VM은 드롭된 프레임 없이 720p60 H.264를 인코딩했습니다(VRAM, 호스트 리소스, GeForce 카드의 12세션 NVENC 제한에 의해 제한됨).

일반적인 사용 사례

  • 실시간 GPU 가속이 필요한 클라우드 게이밍 또는 원격 데스크톱 서비스.
  • 물리적 GPU가 필요하지만 VM을 통한 격리를 원하는 CI 파이프라인 또는 서버리스 AI 워크로드.
  • 소비자급 NVIDIA GPU에서 CUDA, Vulkan 또는 NVENC의 이점을 얻는 헤드리스 워크로드.

제한 사항 및 요구 사항

  • Linux 호스트와 게스트만 지원됩니다. 드라이버 버전은 535.129.03 이상이어야 합니다.
  • 보안은 호스트 드라이버로 제한됩니다 – 이는 하드웨어 격리 경계가 아닙니다. 신뢰할 수 없는 테넌트는 패스스루 또는 NVIDIA 공식 vGPU를 사용해야 합니다.
  • 프로젝트는 초기 단계입니다: 두 GPU 모델에서 테스트되었으며, CUDA는 작동하지만 광범위한 벤치마킹이 부족합니다.

구성

  • driver/ – 게스트 측 커널 모듈(GPL-2.0).
  • device/ – virtio 장치의 VMM 비종속 Rust 구현(Apache-2.0).
  • protocol/ – 공유 프로토콜 정의(BSD-3/GPL-2.0).

추가 자료

  • 아키텍처 세부 사항: ARCHITECTURE.md
  • 벤치마크 방법론 및 결과: BENCHMARKS.md
  • 보안 고려 사항: SECURITY.md

결론 virtio-nvgpu는 여러 Linux VM 간에 단일 소비자급 NVIDIA GPU를 공유하면서 네이티브에 가까운 성능을 유지하기 위한 틈새 시장이지만 실용적인 솔루션입니다. NVIDIA vGPU 라이선스 비용 없이 멀티 테넌트 환경에서 GPU 가속 워크로드가 필요한 개발자와 운영자를 대상으로 합니다.

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트