Hyper-V虚拟化平台GPU分区和GPU半虚拟化技术的比较

2025-05-15 19:22:35 admin 30

© [2025] [云飞扬]
原创内容,转载请注明出处

GPU 分区(GPU Partitioning,简称GPU-P)和GPU 半虚拟化(GPU Paravirtualization,简称GPU-PV)是Windows操作系统支持Hyper-V虚拟化组件支持的两种GPU虚拟化技术。两种技术都可以实现GPU的虚拟化和共享使用。但是两种技术的原理存在差异,使用上存在较大的差别。本文将比较分析一下两种技术的原理,适用场景,以及优缺点。

Hyper-V上GPU虚拟化技术的回顾

微软最早在Windows Server 2012中推出RemoteFX vGPU技术,可以实现软件模拟的vGPU。RemoteFX vGPU的性能比较低,并且存在安全隐患。在Windows Server 2022中,已经不再提供对RemoteFX vGPU的支持。Windows Server 2016提供了DDA(Discrete Device Assignment)技术,也就是GPU直通技术。DDA允许将一个物理GPU直通给一个虚拟机。之后微软规划了GPU-P的技术,可以实现基于SR-IOV的虚拟化,计划在Windows Server 2019中推出。但是由于技术障碍,以及GPU厂家配合问题,GPU-P并没有在Windows Server 2019中推出。甚至也没有在 Windows Server 2022中正式发布。期间微软在vGPU上做了两间事情,第一件是实现GPU半虚拟化(GPU Paravirtualization),该技术是在Windows 10/11桌面版本的Hyper-V平台上实现半虚拟化的vGPU,以实现在WSL2(Windows Subsystem for LinuxVersion 2)提供vGPU。以增强微软桌面操作系统对Linux运行环境的支持,以Linux的开发者和容器的使用者使用Windows桌面。另一件事情是微软在Azure和Azure Stack HCI,提供了对NVIDIA vGPU的支持。也就是说微软的Hyper-V有三条线,一条是桌面操作系统,主要提供半虚拟化特性,优先支持了WSL2。第二条是云服务产品的Azure Cloud/Azure Stack HCI,支持了NVIDIA的vGPU。第三条线是服务器产品线,GPU分区特性从原计划在Windows Server 2019发布,一直推迟到Server 2025才正式发布。

这里要说一下,很多玩家都知晓的GPU-PV的技术(Easy-GPU-PV脚本)。这个技术实质是GPU半虚拟化技术。我们知道,半虚拟化技术,是需要Guest OS进行修改,适配Host OS的设备接口。WSL2能够支持vGPU,是微软为Linux写了设备驱动,可以调用Host OS 提供的GPU驱动接口。同样的道理,Guest OS如果是Windows,如果更新一下驱动,也可以调用Host OS的GPU能力。这就是Easy-GPU-PV脚本所做的事情。这里面比较微妙的是,微软并没有官方宣布支持GPU半虚拟化,只是对外官宣了对WSL2的支持。但是Easy-GPU-PV的脚本已经传遍了海内外,为大量的vGPU玩家所熟知。

笔者很早就关注到了这项技术,大概了解一下背后的事情。GPU-PV的脚本大概在2020年由一个微软中国区的测试工程师在Youtube泄露的脚本。然后大量的玩家开始测试和完善这个脚本。这背后的实质是微软在windows 的设备驱动(WDDM 2.4)提供了对半虚拟化的支持。但是半虚拟化并不是真实显卡,应用程序并不只是通过WDDM调用GPU,还有其他接口调用GPU的能力。因此半虚拟化的vGPU无法做到应用的良好兼容。 尤其是一些专业级别的设计软件。比如专业的软件可能调用显卡的CUDA接口,调用显卡的编码、解码接口。如果切换成半虚拟化显卡。这些专业软件可能就出现不兼容的问题。 微软对这些专业设计软件厂家有没有影响力?我想这个影响力,远不如NVIDIA对这些专业软件厂家的影响力。如果微软正式发布Windows支持GPU-PV,那么将遭遇大量兼容性问题。于是微软采用了一个官方三缄其口,不谈对GPU-PV的支持。民间大量爱好者,对GPU-PV做了大量的试用和测试。期间微软的半虚拟化技术也逐渐完善,相关的软件厂家,也逐步加强了对GPU-PV的支持。经过5年的过渡,我们终于可以看到微软官方文档中对于GPU半虚拟化的描述。

到目前,GPU分区和GPU半虚拟化都比较正式,2025年4月,NVIDA vGPU 18.0也官宣了对Windows Server 2025的GPU分区技术的支持。GPU分区跳过了对老旧的媒介模式的vGPU的支持,直接以SR-IOV的方式支持NVIDIA的vGPU技术。业界的OS巨头和GPU巨头,终于官宣了一个双方认可的vGPU方案,以迎接IT进入AI的时代。

GPU 分区(GPU Partitioning)

GPU-P(GPU Partitioning) 是微软在 Windows 虚拟化平台(如 Hyper-V)中引入的 GPU 资源分配技术,属于 Discrete Device Assignment (DDA) 的扩展功能。其核心目标是将单个物理 GPU 的计算和显存资源动态划分为多个虚拟 GPU(vGPU),允许多个虚拟机(VM)共享同一块物理 GPU,同时保持接近原生的图形性能。

Windows Server 2025版本支持GPU分区特性。NVIDIA在2025年3月发布的NVIDIA vGPU 18.0支持 Microsoft Windows Server 2025,用户能够利用 GPU 分区和跨分布式环境实时迁移等高级管理功能。 借助这些功能,用户可以高效管理多个工作负载、进行硬件维护和升级软件,而无需中断虚拟机。

支持GPU分区的NVIDIA显卡型号有:NVIDIA A2、NVIDIA A10、NVIDIA A16、NVIDIA A40、NVIDIA L2、NVIDIA L4、NVIDIA L40、NVIDIA L40S

GPU分区是基于SR-IOV技术架构实现的vGPU技术。实现SR-IOV需要几个部分的配合:1、GPU硬件本身支持SR-IOV,从Ampere架构的GPU开始,支持SR-IOV。2、Host支持对SR-IOV设备的管理,这部分体现在Windows 2025的GPU分区技术,以及NVIDIA针对GPU分区技术开发的Host上的GPU驱动。3、Guest OS上的显卡驱动。这部分由显卡厂家提供。

在资源管理方面,基于SR-IOV技术,每个vGPU的显存可以实现预分配和独享使用。vGPU的算力,可以按照不同的策略进行调度,比如均匀等分,或者尽力而为。比如一个GPU划分成N个vGPU,每个vGPU分配N分之一的显存。可以有N分之一的保底算力,最大可以用到全部算力。这方面可以参考NVIDIA vGPU的相关文档。

采用GPU分区实现vGPU有几个优势:1、良好的性能,每个虚拟显卡(VF:Virtual Function)都有独立的PCI通信地址,虚拟机的GPU驱动可以通过IOMMU机制高效的与GPU硬件通信。

2、良好的安全隔离。每个虚拟机之间对应不同的VF。有独立的地址空间和内存空间。安全性好。

3、封装和解耦。GuestOS和Host OS之间没有依赖。可以支持多种Guest OS。Guest OS和Host OS可以独立的升级,不会相互影响。

4、使用GPU分区技术,可以得到微软和显卡厂家的官方技术支持。


GPU 半虚拟化(GPU Paravirtualization)

GPU-PV(GPU Paravirtualization)是半虚拟化技术。其技术架构如下:


云教室

为了实现半虚拟化,修改了Dxkrnl.sys,并新增了VRD这个虚拟设备驱动。并且还需要硬件厂家提供UMD驱动。在半虚拟化架构下,要求Host OS和Guest OS采用相同的 WDDM版本和相同的硬件驱动(IHV UMD)。我们可以看到 Easy-GPU-PV的脚本中,需要在Guest OS中注入Host OS中的硬件驱动。这样实现驱动版本的统一。在GPU-PV的使用建议中,一般建议Host OS 和 Guest OS使用相同的版本。

从上述技术架构上可以看出:

1、资源实际上是在Host OS中统一管理和集中使用的。如果Host OS的驱动错误,会导致Host OS奔溃。

2、多个虚拟机之间的资源占用,是依靠Host OS的驱动来协调的。 每个Guest OS相当于Host 的一个图形应用。Host OS能够在多大的粒度上对不同Guest的资源进行隔离,存在问题。如果是托管环境,很可能会导致Host OS被攻击。

3、Host OS 和 Guest OS 存在耦合性。需要确保Host OS和Guest OS 的版本相互兼容,并且驱动的版本保持一致。

总体上看GPU半虚拟化不适合生产环境。

1、没有官方的软硬件和应用兼容性列表。

2、在一些情况下,可能出现主机和客户机同时奔溃。

3、Hyper-V Manager中,并没有包含GPU-PV的支持。也证明该特性处于实验阶段。

4、使用GPU半虚拟化,您无法得到微软或者显卡厂家的官方支持。只能在在线社区中寻找解决方案。

5、主机和客户机,无法做到完全解耦。 升级主机操作系统可能会导致客户机不兼容。升级主机的驱动,会导致客户机的驱动需要同步更新。

6、在虚拟化层面,缺少热迁移的支持。

技术比较和应用建议

我们从硬件要求、资源管理、兼容性、技术支持、稳定性、成本几个方面进行分析和比较。

硬件要求

GPU-P:要求支持SR-IOV的NVIDIA 显卡。并且需要NVIDIA vGPU的软件。GPU-PV:消费级显卡即可。适用于所有显卡。

资源管理

GPU-P:资源在硬件层面切割。对GPU的显存进行分割后分配个虚拟。GPU的算力资源可以按照不同策略进行切割,包括固定共享、尽力而为的策略。参见下图,在尽力而为的策略下,GPU如果分配4个VM,每个VM可以保障25%的算力,可以最大使用全部的GPU算力。

云教室1747284097229

GPU-PV:在软件层面进行资源的调度。可以预设最低和最大资源配额。虚拟机直接可能存在较大的资源争用。比如一个虚拟机用户进行GPU的压力测试,会极大影响其他虚拟机的用户体验。

兼容性

GPU-P:对虚拟化系统、显卡硬件、专业设计软件,都有良好的兼容性。专业的设计软件一般都会主流显卡厂家进行兼容性测试,并给出软件的硬件兼容性列表。

GPU-PV:无法得到微软、显卡厂家和专业设计软件的官方支持。可以在在线社区中得到一些用户的支持。

稳定性

GPU-P:良好的稳定性。适合于生产环境,云服务的托管环境。

GPU-PV:稳定性差,使用某些版本的驱动可能会导致主机和客户机都崩溃。

技术支持

GPU-P:可以得到各方厂家的支持。包括虚拟化厂家(微软)、显卡厂家、以及应用厂家。专业的设计软件推荐的运行环境包括了NVIDIA vGPU的运行环境。

GPU-PV:微软只是在Windows桌面操作系统上官宣了对WSL2的支持。GPU-PV上运行Windows桌面,以及在Windows Server上启用GPU-PV,都没有微软得到微软的官宣。处于实验状态。显卡厂家、应用厂家(专业设计软件)也没有官方的支持。

成本

GPU-P:需要专业的支持SR-IOV的专业GPU。硬件成本高。还涉及到NVIDIA vGPU授权。也是一笔不菲的费用。

GPU-PV:不需要专业卡。也不需要NVIDIA vGPU授权。成本低。

应用建议

GPU-P:适用于生产环境,云服务的多租户托管环境。用户之间有严格的安全隔离和QoS保障。

GPU-PV:适用于开发和测试,小规模的家庭用户。由于缺少支持,稳定性差,耦合性强,不适合生产环境,多租户环境。


项目GPU分区(GPU-P)GPU半虚拟化(GPU-PV)
硬件要求支持SR-IOV的NVIDIA GPU消费级显卡、专业卡
资源管理GPU的虚拟资源相互,vGPU的资源有保障vGPU资源的隔离很差,可能相互影响
兼容性良好的兼容性,兼容游戏和专业设计软件没有官方的兼容性列表
技术支持有虚拟化、显卡厂家的官方支持没有官方支持
成本成本较高,包括GPU硬件、NVIDIA vGPU授权成本较低
应用建议企业生产环境、云服务商的托管环境
开发和测试环境、家庭或者个人用户

朵拉云作为一款支持多平台的桌面虚拟化系统,已经支持GPU分区技术,可以用于生产环境的部署。由于Hyper-V平台上的GPU半虚拟化技术目前还处于未官宣的实验状态,朵拉云桌面虚拟化系统也不提供对GPU-PV技术的官方支持。如果对GPU-PV有兴趣的用户,同样可以对DoraCloud创建的虚拟机启用GPU-PV的相关脚本,从而启用GPU-PV的功能。


首页
产品
方案
联系