nestrilabs/virtio-nvgpu

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

virtio-nvgpu – 複数のVMで1つのNVIDIA GPUを共有

機能

  • 複数のLinux仮想マシン(VM)が、vGPUライセンスやPCIパススルーなしで同じ物理NVIDIA GPUを使用できるvirtioデバイスを提供。
  • ホストは公式NVIDIAドライバを実行し、ゲストカーネルは小さなドライバモジュールをロードして、実際のNVIDIAドライバ呼び出しをホストに転送します。GPUコマンドはGPUメモリに直接書き込まれるため、ワークロードはベアメタルに近い速度で実行されます。

重要性

  • 従来のPCIパススルーではGPU全体を1つの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を使用する必要があります。
  • プロジェクトは初期段階:2つの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
  • プロジェクト