virtio-nvgpu NVIDIA GPU: доступ до графічного процесора

Nestri Labs представляє проект virtio-nvgpu для доступу до NVIDIA GPU

Nestri Labs розробляє virtio-nvgpu, експериментальний проект, який дозволяє гостям Linux KVM отримувати доступ до NVIDIA GPU без традиційного PCI passthrough. Основна мета – дозволити кільком ізольованим ігровим віртуальним машинам використовувати один і той же NVIDIA GPU, рендерити кадри, кодувати їх за допомогою NVENC і транслювати результат на віддалені пристрої.

Поділ ресурсу GPU між кількома віртуальними машинами

Замість призначення цілого GPU для однієї віртуальної машини, virtio-nvgpu зберігає GPU на хості Linux і дозволяє кільком гостям ділити його. Nestri продемонструвала одночасне використання одного GeForce RTX 3060 чотирма гостями.

Технологія роботи проекту virtio-nvgpu

Проект працює з KVM та настроюваним пристроєм virtio. Всередині гостя драйвери NVIDIA залишаються незмінними, тоді як драйвер ядра гостя пересилає необхідні запити до драйвера NVIDIA на хості. На відміну від підходів, які переводять виклики Vulkan або OpenGL, virtio-nvgpu працює на рівні ABI драйвера ядра NVIDIA. Це дозволяє зберігати більшість роботи GPU всередині гостя та зменшує комунікацію через межі віртуальної машини.

Ефективність та можливості проекту

Згідно з бенчмарками Nestri, продуктивність близька до металу з перевантаженням близько 2% або менше для типових навантажень з кадрами. Проект також підтримує рендеринг Vulkan, презентацію Wayland, кодування NVENC і базову ENUM-кацію пристроїв CUDA.

Подальші розробки та експериментальний статус

Зв’язок із Nestri є прямим. Їх проект nesbox використовує легкі мікро-VN на основі KVM для хмарного геймстрімінгу. Графічні процесори Intel та AMD уже покладаються на існуючі механізми virtio-gpu, тоді як virtio-nvgpu розробляється для забезпечення подібної підтримки апаратного забезпечення NVIDIA.

Наразі virtio-nvgpu залишається експериментальним. Він не забезпечує таку ж ізоляцію, як VFIO passthrough, а підтримка залежить від сумісності драйвера NVIDIA ABI. Проте проект вже функціонує і підтримує Vulkan, Wayland, NVENC та спільне використання GPU між кількома гостями.

Для отримання додаткової інформації, відвідайте репозиторій проекту на GitHub.