DoraCloud云桌面使用vGPU(一)
1. 前言
1.1 应用场景
GPU在VDI的项目中有非常重要的作用。主要应用于如下场景:
办公场景:vGPU用于对操作系统和相关应用进行加速,提升用户体验,降低CPU的消耗。
在Microsoft Windows 10/11、Office 365、Web 浏览器和视频流相关的应用程序,对硬件的需求也日益严苛,会使用到GPU进行加速。在办公场景中,为桌面配置vGPU,可以提升体验,降低CPU的消耗,从而提高服务器部署的桌面的密度。
设计场景:专业的设计应用(CAD/CAM)需要使用GPU进行加速显示、渲染、模拟计算
专业的设计软件对于桌面的GPU有要求。缺少GPU将运行这些专业的应用。 比如数字媒体、设计、仿真等应用。比如 Adobe系列产品(PS、AE、AI、PR、AU)、Autocad、Revit、Maya、3Dmax、SolidWorks、Pro-E、NX/UG、Catia、Stable Diffusion、Blender 3D。 这类应用一般采用专业的图形工作站。
游戏场景:满足在线运行游戏的需求,满足游戏的实时交互体验
比如3A大作《地平线5》、《黑神话-悟空》,《元神》,以及一些网络游戏,单机游戏。
游戏场景对GPU由更高的要求,一方面游戏是实时业务,需要及时低延时和瞬时响应,以确保操作体验。另一方面游戏对于画质、实时渲染的帧率,有很高的要求。
在实际部署中,游戏场景一般采用独立显卡,并且采用高画质低延时的串流协议。
1.2 DoraCloud支持的vGPU的技术
GPU直通(GPU Passthrough)
GPU直通是最早的vGPU技术。直通方案将一个GPU的PCI地址映射到虚拟机。一个GPU只能给一个虚拟机使用。
GPU分片虚拟化(vGPU)
GPU分片虚拟化是将一个物理的GPU分割成多个实例,给不同的虚拟机使用。最初PCI规范下,一个物理GPU设备只有一个PCI地址,为了能够多个虚拟机能够使用一个GPU,需要引入一个协调者(Mediate),来协调不同虚拟机对GPU的使用。每个虚拟机使用的是一个mdev(Mediated Device)。至于IOMMU(地址空间映射)是为了实现GPU和虚拟机的高效和快速通信。
NVIDIA 安培架构之前的GPU都是采用Mediate方案。NVIDIA M10/M60/P4/P40/T4/RTX6000/RTX6000 都是这种方案。
NVIDIA 支持vGPU的显卡打包在了NVIDIA vWS 和 vPC 的方案里面。只有宣称支持vWS/vPC的显卡采用启用GPU虚拟化。并且NVIDIA会对vGPU收取License费用。
另外针对普通NVIDIA显卡不支持虚拟化的问题,业内有vgpu-unlock的方案,将普通显卡破解,实现启用vGPU。这一方案仅仅适用于图灵架构及之前的GPU。安培架构的GPU不适用于这一方案。并且vgpu-unlock的方案是否存在兼容性和稳定性问题,也无法证实。实际项目部署,不推荐使用vgpu-unlock。
基于SR-IOV的vGPU
SR-IOV:单根IO虚拟化,指的是一个PCIe物理设备,可以虚拟出多个虚拟设备,每个虚拟设备又自己的PCI地址。这样物理设备内的每个虚拟设备的实例可以分配自己的PCI地址。这样虚拟机与虚拟设备实例之间可以通过自己的PCI地址进行通信。效率大大提升,也简化了管理。
NVIDIA 的GPU从安培架构开始支持SR-IOV。比如 A2、A10、A40、A5000、A6000、L2、L20、L40。尽管支持SR-IOV,mediate的功能框架仍然保留了。
微软在Azure Stack HCI 和 Windows Server 2025中,提供了基于SR-IOV的vGPU的支持。微软称之为GPU-P。
Intel从12代CPU开始,也支持核显的SR-IOV。11代的移动处理器(比如1135G7)核显也支持SR-IOV。
AMD采用SR-IOV的vGPU技术称为 MxGPU。
DoraCloud 目前不支持 MxGPU 和 GPU-P。
1.3 DoraCloud 与 Proxmox VE 不同版本的配套关系
Proxmox VE 7.x 支持安装并启用NVIDIA vGPU 和 Intel SR-IOV Graphcis的驱动,并且在虚拟机中配置和使用这些vGPU资源。
Proxmox VE 7.x可以通过直接将GPU的PCIe地址和vGPU类型配置给虚拟机。由于PCIe地址是GPU在服务器上的物理地址,这种方式带来了两个问题:
1)如果虚拟机发生跨节点迁移(比如热迁移或者HA),新的服务器上的GPU的会不一样。导致无法进行HA和热迁移。
2)如果GPU硬件发生变化,需要调整虚拟机配置中的物理地址。 这种方式和虚拟化的隔离和解耦的思路是相违背的。增加了虚拟化系统进行资源管理和调度的难度。
Proxmox VE 8.x 中,增加了Resource Mapping的特性。
ResourceMapping 在Proxmox VE的集群层面定义了一个唯一的资源ID,这个ID关联到一组硬件(PCIE设备或者USB设备)。虚拟机的配置中,只需要记录ResouceMapping的资源ID即可。虚拟化管理系统(PVE)自动根据资源ID在ResouceMapping定义的资源集合中,匹配合适的资源。
在没有ResourceMapping特性时,DoraCloud是将同类型的GPU定义成一个资源池,并分配和这个池的资源。比如一个Proxmox VE集群中配置了4个Tesla P4卡,DoraCloud会识别出Tesla P4这种GPU类型,允许管理员在桌面池中引用这种类型的GPU,并定义vGPU。 参考下面的表格。
| 桌面池 | GPU类型 | vGPU类型 |
|---|---|---|
| 桌面池A | Tesla P4 | P4-1Q |
但是这种设计,只能把同一类型的GPU当作一个池进行调度。 如果管理员系统 2块P4给桌面池A,类型为 P4-1Q,两块P4给桌面池B,类型为P4-2Q,那么DoraCloud将无法准确调度这些资源到不通过的P4显卡。 比如下面的桌面池定义,DoraCloud将无法准确的资源进行调度。
| 桌面池 | GPU类型 | vGPU类型 |
|---|---|---|
| 桌面池A | Tesla P4 | P4-1Q |
| 桌面池B | Tesla P4 | P4-2Q |
如果使用 ResourceMapping,可以在 Proxmox VE 的集群上定义如下Mapping
| Mapping ID | Mapping |
|---|---|
| GPUA | PVE1 card1,PVE2 card1 |
| GPUB | PVE1 card2,PVE2 card2 |
然后在DoraCloud的桌面池上定义:桌面池A使用Mapping:GPUA、桌面池B使用Mapping:GPUB。
| 桌面池 | GPU类型 | vGPU类型 |
|---|---|---|
| 桌面池A | Mapping:GPUA | P4-1Q |
| 桌面池B | Mapping:GPUB | P4-2Q |
DoraCloud与Proxmox VE 7.x对接时,不支持管理直通的GPU资源。 DoraCloud 与Proxmox VE 8.x对接时,使用ResouceMapping特性也允许DoraCloud比较容易的支持GPU直通(GPU Passthrough)。
比如:一个Proxmox VE 8.0节点配置有4个RTX 3060Ti的显卡。可以定义如下Mapping
| Mapping ID | Mapping |
|---|---|
| RTX3060GPU | PVE1 card1/card2/card3/card4 |
然后定义一个桌面池
| 桌面池 | GPU类型 | vGPU类型 |
|---|---|---|
| 游戏桌面池 | Mapping:RTX3060GPU | GPU Passthrough |
这样游戏桌面池中的桌面就可以自动使用Proxmox VE 8.x 中定义的由4个显卡组成的RTX3060 ti的资源池。
总结一下,DoraCloud在不同的PVE版本上对几种GPU技术的支持如下表:
| DoraCloud+PVE7 | DoraCloud+PVE8 | |
|---|---|---|
| GPU 直通 | 不支持 | 使用ResouceMapping管理 |
| NVIDIA vGPU | 按照类型管理 | 按照类型管理、使用Resouce Mapping管理 |
| Intel SR-IOV | 按照类型管理 | 按照类型管理 |
1.4 支持vGPU硬件的形态
不同应用场景,不同的vGPU技术,有不同的硬件形态。
硬件A:服务器+可虚拟化显卡
以2U的服务器Dell R750服务器为例,可以支持2块双宽A40显卡,3块A10,6块T4/L2/A2。
硬件B:服务器+多块直通显卡
用于直通的服务器一般选用4U服务器,支持6-8个GPU卡进行直通。常见的为采用超微主板的机器。
硬件C:PC Farm/Blade PC
一般为5U5节点,支持带显卡。 也有一些2U6节点的机器,节点不支持显卡。
硬件D:PC(核显)
普通PC 或者工作站,选用12代以上Intel CPU。
硬件E:工作站+普通显卡
比如Dell T3680 + NVIDIA RTX A2000/A4000
硬件F:工作站+可虚拟化显卡
比如Dell T3680 + NVIDIA RTX A5000
不同硬件适用的场景如下:
| 类型 | 类型名称 | 适用vGPU技术 | 适用场景 |
|---|---|---|---|
| 硬件A | 服务器+可虚拟化显卡 | NVIDIA vGPU | 设计、办公 |
| 硬件B | 服务器+多块直通显卡 | GPU直通 | 设计、游戏 |
| 硬件C | PC Farm/Blade PC | GPU直通 | 游戏、设计 |
| 硬件D | PC(核显) | Intel SR-IOV GPU | 办公、轻设计 |
| 硬件E | 工作站+普通显卡 | GPU直通 | 设计、旧改 |
| 硬件F | 工作站+可虚拟化显卡 | NVIDIA vGPU | 设计、旧改 |
浙公网安备 33010602011771号