聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

GPU虚拟化

2022-01-27 15:25 浏览: 1638 次 我要评论(0 条) 字号:

https://en.wikipedia.org/wiki/GPU_virtualization

看了下GPU虚拟化的wiki,记录下。

GPU虚拟化指的是一种允许虚拟机使用GPU硬件来加速图形处理或让虚拟机可以运行GPGPU应用程序的技术。GPU虚拟化可以应用于各种应用,比如桌面虚拟化、云游戏和计算科学(如流体力学模拟)。
实现GPU虚拟化通常涉及到如下一种或多种技术(这几种技术后面会一一解释):
device emulation:设备仿真/模拟
API remoting:API远程处理
fixed pass-through:固定穿透
mediated pass-through:协调穿透
每种技术都有各自不同的特点,在硬件整合率、图形加速性能、渲染逼真度、功能支持、可移植性、虚拟机的隔离/挂起/恢复和动态迁移等上有不同的表现。

设备仿真/模拟(device emulation)
GPU体系结构非常复杂,变化很快,它们的内部细节通常是保密的。一般来说,完全虚拟化新一代的GPU是不可行的,只有更老、更简单的一代。例如,IBM PC体系结构的专用模拟器PCem可以模拟支持Direct3D 3的S3 ViRGE/DX图形设备和支持Glide等的3dfx Voodoo2设备。
当使用VGA或SVGA虚拟显示适配器时,虚拟机可能没有3D图形“仿真硬件”加速功能,因此只能提供最低的图形功能,比如基本的2D图形功能。虚拟机管理器可以提供软件渲染的通用API实现,以在虚拟机里启用3D图形应用程序,但这个软件渲染实现的3D性能肯定很差(可能低至硬件加速性能的3%)。 以下是使用软件渲染实现图形API的软件技术:
VMware SVGA 3D software renderer
VirtualBox VMSVGA graphics controller
Citrix XenServer OpenGL Software Accelerator
Windows Advanced Rasterization Platform
Core OpenGL software renderer
Mesa software renderer

API远程处理(API remoting)
API远程处理,即虚拟化应用程序对图形API的调用通过远程过程调用转发到宿主机,然后由宿主机在GPU物理硬件上执行对应的图形命令。API远程处理与设备仿真相结合时,它可以说就是一种半/准虚拟化形式。当GPU不支持硬件虚拟化时,API远程处理技术允许在多个虚拟机和宿主机之间共享GPU资源,它在概念上很容易实现,但有几个缺点:
1,在纯API远程处理中,在访问图形API时,虚拟机之间几乎没有隔离,但可以通过半虚拟化来改善隔离。
2,在每帧发出大量绘图调用的应用程序中,性能大概只有硬件性能的12%到86%不等。
3,必须设置大量的远程处理API入口点,如果只有少部分API被转发远程处理,可能会降低图形渲染逼真度。另外,虚拟机上的应用程序可能也会受限于少数可用的API。

虚拟机监控程序通常在虚拟机和宿主机之间使用共享内存,以最大限度地提高性能并较少时延。第三方软件可以通过使用网络接口来添加对特定API的支持,或者在虚拟机监控程序的软件包不支持的情况下添加对典型API的支持,尽管网络延迟和序列化开销可能会超过其好处。

固定穿透(fixed pass-through)
和网卡的PCI pass-through情况类似,这里说的固定穿透就是GPU的PCI pass-through应用,即GPU由单个虚拟机以独占方式永久地直接访问。这种方式的性能非常高,达到96%到100%的本机性能,同时具备高保真度。缺点就是GPU只能被独占,无法在多个虚拟机之间共享,因此它的整合率最低,成本最高,因为每个图形加速虚拟机都需要额外的物理GPU。
以下软件技术实现了固定直通:
VMware Virtual Dedicated Graphics Acceleration (vDGA)
Parallels Workstation Extreme
Hyper-V Discrete Device Assignment (DDA)
Citrix XenServer GPU pass-through
Xen and QEMU/KVM with Intel GVT-d

协调穿透(mediated pass-through)
在协调穿透实现的GPU虚拟化中,GPU硬件通过IOMMU为每个虚拟机提供虚拟内存范围的上下文,虚拟机监控程序将虚拟机的图形命令直接发送到GPU,因此具备接近本机的性能和高保真度。如果GPU硬件将上下文公开为完整的逻辑设备,那么虚拟机可以使用任何图形API。如果只是部分公开/部分不公开,那么需要API库和驱动程序来管理GPU上下文的复杂性(Linux内核里有个Mediated devices用来做这个)。另外,这种GPU虚拟化的缺点是,在访问GPU资源时,虚拟机之间隔离不足。
以下软件和硬件技术实现了协调穿透:
VMware Virtual Shared Pass-Through Graphics Acceleration with Nvidia vGPU or AMD MxGPU
Citrix XenServer shared GPU with Nvidia vGPU, AMD MxGPU or Intel GVT-g
Xen and KVM with Intel GVT-g
Thincast Workstation – Virtual 3D feature (Direct X 12 & Vulkan 3D API)

总结
1,设备仿真/模拟属于完全虚拟化技术,虚拟机无需修改程序库/驱动,也完全不感知具体的物理硬件是什么,甚至可能都没有对应的物理硬件,即可以无需物理硬件支持,直接仿真。
2,API远程处理属于半/准虚拟化技术,虚拟机内需要修改程序库/驱动,虚拟机管理程序会将部分API转发到硬件进行处理,所以需要有对应的物理硬件,但对物理硬件没有特殊要求,目前大多数甚至一些老旧的GPU都支持。
3,固定穿透属于PCI pass-through穿透技术,透过宿主机直接把硬件资源都交给某个虚拟机独占/管理,大多数PCI设备都支持,因此对GPU也没有特殊要求。
4,协调穿透,是一种GPU全虚拟化,虚拟机内无需修改程序库/驱动,即对虚拟机透明,但需要物理硬件本身的支持。该方案既能获得较好的性能,又能实现多虚拟机之间的硬件资源共享,当前应用场景最为广泛。



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复