Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
An experimental virtio-nvgpu project gives Linux KVM guests driver-level access to an NVIDIA GPU, opening a path to shared GPU workloads without traditional PCI passthrough.
virtio-nvgpu is an experimental open-source project from Nestri Labs that aims to provide near-native NVIDIA GPU access inside Linux KVM guests. Instead of passing the entire PCI GPU into one VM, the project keeps the NVIDIA device attached to the host and exposes a custom virtio device to guests.
The important architectural choice is where virtualization happens. The guest runs NVIDIA’s user-space libraries, while a custom guest kernel driver forwards requests to the host NVIDIA driver. The project therefore works at the NVIDIA kernel-driver ABI level rather than serializing every high-level graphics API operation.
Inside the guest, applications can use NVIDIA’s user-space stack for workloads such as Vulkan rendering and NVENC encoding. Requests involving the NVIDIA device files are sent through a virtio control queue to the host-side device implementation. Shared memory is used for mapped GPU regions, while the host NVIDIA driver remains responsible for the actual hardware.
This architecture is particularly interesting for headless game-streaming and GPU workloads where rendering, compositing and video encoding can remain on the GPU inside the guest. The intended pipeline is a guest application, a guest-side compositor, GPU-side processing and NVENC, with the compressed video stream leaving the VM.
Nestri’s published benchmark data was collected on a GeForce RTX 3060 using NVIDIA driver 595.99.02. The project reports that GPU-bound frames taking roughly 2 ms or longer remained within about 2% of the corresponding bare-metal workload in its test setup. Very short workloads showed larger relative overhead because a fixed wake-up cost becomes significant when the frame itself is tiny.
| Test characteristic | Reported result |
|---|---|
| GPU | GeForce RTX 3060 |
| NVIDIA driver | 595.99.02 |
| GPU-bound frames ≥ 2 ms | Approximately 98–100% of bare metal |
| Very light frames ≤ 0.5 ms | Greater relative overhead |
| Multi-guest test | Four guests on one RTX 3060 |
| NVENC | Four simultaneous guest encodes demonstrated |
The repository also reports a four-guest test in which each VM rendered at roughly 25–26 frames per second under the same workload, with the aggregate result close to the single-guest measurement. Four guests is a demonstrated test point, not a stated architectural maximum.
The current project reports several working capabilities, including NVIDIA GPU enumeration through nvidia-smi, Vulkan rendering, Wayland presentation, NVENC through Vulkan Video, and host-memory-backed imported buffers. CUDA support is present at the interface level but remains substantially less validated than the demonstrated rendering path.
Sharing a physical NVIDIA GPU between isolated tenants is not simply a performance problem. The project documentation explicitly notes that virtio-nvgpu does not currently provide the same hardware isolation boundary as VFIO passthrough.
The host NVIDIA driver remains part of the trusted computing base, and the current backend holds host device descriptors inside the VMM process. The project’s planned per-guest isolation helper is documented as a design but is not yet the component handling the device descriptors. Several NVIDIA resource-management and UVM/modeset interfaces also remain outside the project’s mature filtering model.
Traditional VFIO GPU passthrough gives a VM direct ownership of the PCI device. That can provide strong isolation and native driver access, but the whole GPU is normally dedicated to one guest. A host cannot simultaneously use that same physical GPU as a shared resource in the way targeted by virtio-nvgpu.
By contrast, virtio-gpu with API translation can allow multiple VMs to use a GPU, but graphics operations cross a virtualization boundary through the virtual graphics stack. virtio-nvgpu takes a different route by allowing the NVIDIA user-mode driver to build GPU command buffers in the guest and forwarding lower-level driver operations instead.
| Approach | GPU sharing | Guest NVIDIA stack | Isolation profile | Primary trade-off |
|---|---|---|---|---|
| VFIO passthrough | Usually one VM per GPU | Full driver stack | Strong with IOMMU | GPU is dedicated to the VM |
| virtio-gpu / Venus | Yes | Virtualized graphics path | Depends on implementation | API translation and transport overhead |
| virtio-nvgpu | Yes, experimental | NVIDIA user-space stack | Not equivalent to VFIO isolation | Experimental driver-ABI proxy model |
As of September 26, 2026, virtio-nvgpu should be considered an active experimental project rather than a production virtualization platform. The repository documents tested driver profiles beginning with the 535.129.03 ABI profile, with additional profiles for 580.178.04 and 595.71.05. Testing has been performed on an RTX 3060 with driver 595.99.02 and an RTX A2000 with driver 615.71.09, but the project explicitly notes that these are limited test points.
Several areas remain unfinished or deliberately out of scope, including a mature multi-tenant security envelope, broader game testing, full unified virtual memory, scanout, MIG and SR-IOV. Driver ABI compatibility is also an important operational constraint because NVIDIA kernel-driver interfaces can change between releases.
The significance of virtio-nvgpu is not that it has already replaced established GPU virtualization technologies. Its importance is that it demonstrates another possible architecture for sharing NVIDIA hardware between KVM guests while preserving a substantial part of the native NVIDIA software stack inside each VM.
For cloud gaming, GPU-backed development environments, remote graphics and research workloads, that model could eventually reduce the need to dedicate one physical GPU to every VM. The security model and long-term driver compatibility, however, will determine whether the approach can move beyond experimental deployments.
From a virtualization engineering perspective, the most interesting aspect is the boundary placement. virtio-nvgpu avoids putting every Vulkan call onto the virtio transport and instead places the virtualization boundary around NVIDIA’s kernel-driver interface. That is a materially different design from API-level remoting and explains why the project’s early measurements can approach bare-metal performance for sufficiently GPU-bound frames.
That performance result should not be interpreted as a production readiness claim. The benchmark is a limited project measurement on specific hardware and driver versions, and the repository itself documents significant security and compatibility work that remains. Teams evaluating it should reproduce workloads on their own hardware and treat tenant isolation as a separate requirement from performance.
We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.