用 virtio 设备让 KVM 虚拟机近乎原生地使用英伟达 GPU
来源:github.com — 114 分 · by WanjohiRyan
📋 概述
nestrilabs 放出一个实验性项目 virtio-nvgpu:它在驱动 ABI 层面转发英伟达内核驱动的 ioctl,绕过 API 级翻译,让 Linux 客户机直接运行未经修改的英伟达用户态驱动——同样的库、同样的 Vulkan 与 NVENC、同一块卡。官方给的指标是客户机渲染性能与所在机器相差 2% 以内,CPU 开销相当。目标场景是无头串流:虚拟机里的合成器渲染、合成并通过 GPU 编码,再把压缩后的视频发出去,宿主机保留显卡且机器不接显示器。项目以 Apache 2.0 发布,已实现 Vulkan 渲染与头less EGL OpenGL、CUDA 显存分配,并明确排除 cudaMallocManaged、物理显示输出以及 MIG、SR-IOV。
🔑 核心要点
- 关键设计是层次:在驱动 ABI 层面转发 ioctl,而非 API 级翻译。
- 因此客户机可以不加改动运行英伟达用户态驱动,Vulkan 与 NVENC 都用同一套库。
- 性能口径明确:渲染性能与所在机器相差 2% 以内,CPU 开销相当。
- 目标场景是无头串流:虚拟机内渲染合成编码,输出压缩视频,宿主机留住显卡。
- 驱动版本走显式 ABI 档位:535.129.03、580.178.04、595.71.05,按范围匹配。
- 边界写得很清楚:不支持统一内存、不做物理显示输出、不支持 MIG 与 SR-IOV。
💡 金句
客户机在其所在机器 2% 以内的性能范围内渲染,并且 CPU 开销相同。
👍 0
👎 0
← 返回 Hacker News 首页