Nestri Labs разрабатывает virtio-nvgpu, экспериментальный проект, который позволяет гостевым системам Linux KVM получать доступ к GPU NVIDIA без традиционного PCI passthrough. Цель: дать нескольким изолированным игровым виртуальным машинам возможность работать с одной и той же видеокартой NVIDIA, отрисовывать кадры, кодировать их с помощью NVENC и передавать результат удалённым клиентам.

Вместо выделения целой GPU одной виртуальной машине virtio-nvgpu оставляет видеокарту на хосте под управлением Linux и позволяет нескольким гостевым системам делить её между собой. Nestri продемонстрировала четыре гостя, одновременно использующих одну GeForce RTX 3060.

Проект работает с KVM и собственным устройством virtio. Внутри гостя пользовательские драйверы NVIDIA остаются без изменений, а гостевой драйвер ядра перенаправляет нужные запросы драйверу NVIDIA на хосте.

В отличие от подходов с трансляцией вызовов Vulkan или OpenGL, virtio-nvgpu работает на уровне ABI ядерного драйвера NVIDIA. Так основная работа с GPU остаётся внутри гостя, а объём обмена данными через границу виртуальной машины сокращается.

По данным бенчмарков Nestri, производительность близка к работе на голом железе: накладные расходы составляют около 2% или меньше на типичных задачах отрисовки кадров. Проект также поддерживает рендеринг Vulkan, вывод через Wayland, кодирование NVENC и базовое перечисление устройств CUDA.

Связь с Nestri прямая. Её проект nesbox использует лёгкие микроVM на базе KVM для облачного стриминга игр. GPU Intel и AMD уже опираются на существующие механизмы virtio-gpu, а virtio-nvgpu разрабатывают, чтобы обеспечить аналогичную поддержку оборудования NVIDIA.

Пока virtio-nvgpu остаётся экспериментальным. Он не даёт такой же изоляции, как VFIO passthrough, а поддержка зависит от совместимости с ABI драйвера NVIDIA. Тем не менее проект уже работает: есть рабочие Vulkan, Wayland, NVENC и совместное использование GPU несколькими гостями.

Подробности в репозитории проекта на GitHub.