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
- プロジェクト