news 2026/7/28 14:44:46

GPU 虚拟化:让 Guest 看到 Host 硬件的技术分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GPU 虚拟化:让 Guest 看到 Host 硬件的技术分析

在 GPU 虚拟化中,"让 guest 如何能看到并使用 host 端真实硬件"是一条主线。本文按虚拟化方式把相关技术细化为四类——直通(Pass-through)硬件分区(SR-IOV)中介直通(Mediated)API 转发(Paravirtual),逐层剖析实现原理、内核栈、优缺点与 AMD 平台落地方式。

目标:讲清每种技术里 “guest 看到的硬件” 究竟是什么、host 侧靠什么机制把真实 GPU 暴露/切分给 guest。


0. 总览:一张分类图

按"guest 看到的东西离真实硬件有多近"排序,从最近(几乎是裸金属)到最远(纯软件抽象):

维度PassthroughSR-IOVMediated (mdev)API 转发
Guest 看到的硬件完整真实 GPU标准 PCIe VF中介虚拟设备虚拟 GPU
共享能力独占(1:1)硬件多分区(1:N)软件时分/空分(1:N)高度共享(1:N)
隔离机制IOMMU硬件 + IOMMU硬件上下文 + 软件调度软件
性能最高(≈裸金属)较低
Guest 驱动原生原生/精简 VF 驱动原生(配 host 中介)virtio-gpu 前端
AMD 代表VFIO 直通MxGPU / GIM——virtio-gpu (venus)

1. 直通类:PCI Passthrough(VFIO / IOMMU)

1.1 原理

整块物理 GPU从 host 上解绑,通过 IOMMU 直接映射进一个 guest 的地址空间。Guest 里看到的是真实的 PCIe 设备(真实的 Vendor/Device ID、BAR、配置空间),用原生驱动直接操作。

关键硬件依赖:

  • IOMMU(IntelVT-d/ AMDAMD-Vi / IOMMU v2):负责 DMA 地址翻译与隔离,保证 guest 发起的 DMA 只能访问分配给它的内存。
  • 中断重映射(Interrupt Remapping):把设备中断安全地投递给正确的 guest。

1.2 内核栈(Linux)

Guest 原生 GPU 驱动

QEMU/KVM vfio-pci

VFIO 框架

IOMMU 硬件

物理 GPU

关键组件:

  • vfio-pci:host 端接管 GPU 的占位驱动(替换掉amdgpu/nvidia)。
  • vfio_iommu_type1:管理 IOMMU 域和 DMA 映射。
  • QEMU-device vfio-pci,host=xx:yy.z:把设备暴露给 guest。

典型绑定流程:

# 1. 解绑原生驱动,绑定 vfio-pciecho"0000:03:00.0">/sys/bus/pci/devices/0000:03:00.0/driver/unbindecho"1002 744c">/sys/bus/pci/drivers/vfio-pci/new_id# 2. QEMU 直通qemu-system-x86_64-devicevfio-pci,host=03:00.0...

1.3 优缺点

优点缺点
性能最高,≈裸金属一张卡只能给一个 VM(独占)
Guest 用原生驱动,功能完整无法超分/共享,密度低
实现相对简单,成熟稳定GPU 复位、直通迁移较难

适用场景:单租户高性能计算、AI 训练、需要完整 GPU 功能的场景。


2. 硬件分区类:SR-IOV(Single Root I/O Virtualization)

2.1 原理

SR-IOV 是PCIe 规范级别的硬件能力。一个物理设备暴露:

  • PF(Physical Function):完整功能,由 host 驱动管理,负责资源分区与配置。
  • 多个 VF(Virtual Function):每个 VF 是一个"轻量级 PCIe 设备",拥有独立的配置空间、BAR、DMA 上下文,但共享 PF 的部分底层资源。

每个 guest直通一个 VF,看到的是接近真实的标准 PCIe 设备。GPU 内部的硬件调度器在多个 VF 之间做时分/空分复用。

PF: Host 管理
资源分区/调度配置

GPU 硬件调度器

VF0

VF1

VF...N

Guest 0 直通

Guest 1 直通

Guest N 直通

2.2 AMD 实现:MxGPU / GIM

AMD 的 SR-IOV GPU 虚拟化方案叫MxGPU,host 端驱动是GIM(GPU-IOV Module)

  • GIM运行在 host(hypervisor),管理 PF,配置 VF 数量、显存分区、调度时间片(World Switch)。
  • World Switch:GPU 硬件在 VF 之间切换整个执行上下文(寄存器、页表、队列状态),实现时分复用。
  • Guest 里跑标准amdgpu VF 驱动,通过邮箱(mailbox)机制与 PF/GIM 通信(如请求 GPU 复位、报告状态)。

关键点:显存和部分引擎是空分(每个 VF 分到固定显存段),计算引擎时间片是时分(World Switch 轮转)。

2.3 其他厂商实现

厂商方案说明
AMDMxGPU / GIMSR-IOV 硬件分区,World Switch 时分
NVIDIAvGPU(Ampere/Hopper)新架构用 SR-IOV VF;MIG 可再做空分硬件隔离
IntelFlex 系列 SR-IOV数据中心 GPU 的 SR-IOV 分区

补充:NVIDIA MIG(Multi-Instance GPU)是更强的空分硬件隔离——把 GPU 的 SM、L2、显存控制器物理切成独立实例,可与 SR-IOV 叠加。它比纯时分的 World Switch 隔离性更强,但属于 NVIDIA 专有能力。

2.4 优缺点

优点缺点
硬件级隔离,安全性好需要硬件+固件支持(不是所有卡都有)
一卡多 VM,密度高VF 数量、显存分区通常固定,弹性有限
Guest 近似原生性能授权/固件成本(部分厂商收费)

适用场景:云 GPU、VDI、多租户推理,需要在共享与隔离间平衡。


3. 中介直通类:Mediated Device(mdev / GVT-g)

3.1 原理

对于没有 SR-IOV 硬件的 GPU,Linux 内核提供mdev(Mediated Device)框架用软件方式做分区。Host 驱动把一个物理 GPU 切成多个"中介设备",guest 看到一个部分模拟 + 部分直通的混合设备:

  • 性能关键路径(如帧缓冲、部分寄存器)走直通,接近原生。
  • 控制/敏感路径(如上下文切换、特权寄存器)走 host 驱动软件中介(trap-and-emulate)

直通: 性能路径

模拟: 特权路径

Guest 原生驱动

VFIO-mdev

Host GPU 驱动中介层

物理 GPU

3.2 代表实现:Intel GVT-g(KVMGT)

Intel 集显的GVT-g是 mdev 最经典的实现:

  • Host 驱动i915内嵌 GVT 模块,通过 mdev 暴露多个 vGPU。
  • 全 GPU 上下文切换:软件调度器在多个 guest 的渲染上下文间切换(软件版 World Switch)。
  • 影子页表(Shadow Page Table):host 维护 guest GPU 页表的影子副本,保证 DMA 隔离。

创建 mdev 实例:

# 列出支持的 mdev 类型ls/sys/class/mdev_bus/0000:00:02.0/mdev_supported_types/# 创建一个 vGPU 实例echo"$(uuidgen)">.../mdev_supported_types/i915-GVTg_V5_4/create

3.3 优缺点

优点缺点
不需要 SR-IOV 硬件,成本低软件中介有性能开销
共享灵活,可软件调度隔离性弱于硬件分区
内核标准框架(mdev/VFIO)维护复杂,厂商支持在收缩(GVT-g 已逐步退场)

适用场景:轻量图形虚拟化、旧硬件复用、桌面 VDI。


4. API 转发类:Paravirtual GPU(virtio-gpu / API Remoting)

4.1 原理

Guest 里看不到真实硬件,看到的是一个虚拟 GPU 设备。Guest 把图形/计算 API 调用(OpenGL/Vulkan)序列化成命令流,转发给 host;host 用真实 GPU执行后把结果返回。本质是"设备接口虚拟化 + 命令转发"。

命令流序列化

Guest App

Guest Mesa 前端
virtio-gpu 驱动

virtio 传输

Host virglrenderer/venus

Host 真实 GPU 驱动

物理 GPU

4.2 代表实现

方案转发的 API说明
VirGLOpenGLvirtio-gpu + virglrenderer,最早的开源 3D 转发
VenusVulkanvirtio-gpu 的 Vulkan 后端,命令更接近原生,开销低
API Remoting各类桌面虚拟化(VMware SVGA、Parallels)的通用思路
  • Guest 内核驱动:virtio-gpu(标准 virtio 设备)。
  • Guest 用户态:Mesa 的virgl/venusGallium/Vulkan 驱动。
  • Host:virglrenderer(含 venus)把命令流翻译成 host GPU 的真实 API 调用。

4.3 优缺点

优点缺点
高度共享,不占用独立硬件资源性能最低,转发有开销
无需特殊 GPU 硬件能力功能受 renderer 支持范围限制
Guest 完全解耦具体 GPU 型号,易迁移计算(compute)支持不如图形成熟

适用场景:桌面虚拟化的 3D 加速、容器/沙箱图形、跨型号可迁移场景。


5. 横向对比与选型建议

5.1 综合对比表

技术Guest 看到共享隔离性能硬件要求AMD 落地
Passthrough完整真实 GPU1:1 独占IOMMU★★★★★IOMMUVFIO 直通
SR-IOV标准 VF1:N 硬件分区硬件+IOMMU★★★★☆SR-IOV 固件MxGPU/GIM
Mediated中介设备1:N 软件调度硬件上下文+软件★★★☆☆无特殊要求——
API 转发虚拟 GPU1:N 高度共享软件★★☆☆☆无特殊要求virtio-gpu/venus

5.2 选型决策

否, 只要能用

否, 独占最高性能

是, 要硬件隔离

需要看到真实/接近真实硬件?

需要共享给多 VM?

API 转发
virtio-gpu/venus

PCI Passthrough
VFIO

硬件支持 SR-IOV?

SR-IOV
AMD: MxGPU

Mediated
mdev/GVT-g

核心区分点

  • 想让 guest 看到"真实/接近真实硬件"→PassthroughSR-IOV(硬件辅助,性能最好)。
  • 想在共享的同时仍暴露"设备"→mdev/GVT-g(中介直通)。
  • 不要求看到真硬件→virtio-gpu/API 转发(半虚拟化)。

5.3 AMD 平台聚焦

结合本仓库的 amdgpu / ROCm SVM 工作,最相关的两条路线:

  1. VFIO Passthrough:把整卡直通给一个跑 ROCm 的 guest,SVM、KFD、原子操作等功能与裸金属一致——因为 guest 用的是完整的原生amdgpu+ KFD 栈。
  2. SR-IOV(MxGPU/GIM):多租户共享时,guest 跑 amdgpu VF 驱动,通过 mailbox 与 PF 通信。需要注意 VF 模式下部分特权操作(GPU 复位、某些寄存器)要经 PF 中介,SVM/一致性行为可能受 World Switch 与显存分区影响。

6. 参考锚点

  • IOMMU / VFIO:LinuxDocumentation/driver-api/vfio.rst
  • SR-IOV:PCIe SR-IOV 规范;AMD GIM(GPUOpen/GIM
  • mdev:LinuxDocumentation/driver-api/vfio-mediated-device.rst;Intel GVT-g
  • virtio-gpu / venus:Mesavirgl/venusvirglrenderer
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 14:43:43

打破壁垒:在Windows上直接运行安卓应用的奇妙之旅

打破壁垒:在Windows上直接运行安卓应用的奇妙之旅 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过,为什么我们总要在手机和电脑之间…

作者头像 李华
网站建设 2026/7/28 14:42:54

物联网设备低功耗优化:NBM5100A与TM4C1299KCZAD实践

1. NBM5100A电池增强器核心功能解析NBM5100A是安世半导体推出的一款专门针对纽扣电池优化的电源管理IC,其核心价值在于解决了低容量电池在物联网设备中的两大痛点:续航时间短和峰值电流不足。这款芯片采用自适应功率优化算法,在CR2032等典型纽…

作者头像 李华
网站建设 2026/7/28 14:41:36

树莓派新手入门:从零启动到项目实践全指南

1. 项目概述:为什么是树莓派? 如果你对嵌入式开发、智能家居或者DIY电子项目感兴趣,那么“树莓派”这个名字,你大概率已经听过无数次了。它可能出现在极客论坛的精华帖里,在创客视频的标题中,或者在你朋友口…

作者头像 李华
网站建设 2026/7/28 14:39:04

Mongo db 与mysql 语法比较

Mongo db 与mysql 语法比较mongodb与mysql命令对比传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由 数据库(database)、…

作者头像 李华
网站建设 2026/7/28 14:38:26

向量库 VS 知识图谱:大模型时代语义检索的真相与未来(收藏版)

本文深入探讨了向量库和知识图谱在大模型时代的应用与区别。向量库通过将文本、图片等内容编码为高维数组进行语义检索,但在信息完整性和上下文理解上存在局限。知识图谱则通过实体、关系和属性的结构化表示,更全面地呈现知识的内在联系,结合…

作者头像 李华
网站建设 2026/7/28 14:36:19

医械包装物流大闯关 ——YY/T 0681.15-2019趣味解读

一、标准基础档案:医疗包装专属 “物流试炼手册”YY/T 0681.15-2019 全名《无菌医疗器械包装试验方法 第 15 部分:运输容器和系统的性能试验》,2019 年发布、2020 年正式实施,由国家药监局制定,对标国际严苛运输测试规…

作者头像 李华