云桌面基础技术一:GPU原理及在云桌面中的应用
GPU工作原理和应用场景介绍
GPU场景主要应用在CAD设计、大型建模、3D渲染、融媒体、仿真等等
CPU VS GPU架构对比:
- ALU:用于计算的晶体管,可理解为逻辑运算单元
- CPU:中央处理器,巨大的缓存带来最小的指令延迟,强大复杂的控制逻辑,特点是强控制
- GPU:图形处理器,最大吞吐量,更多寄存器、高带宽,多个线程共享控制逻辑,特点是强计算
CPU vs GPU小结:
相同点:两者都有总线和外界联系,有自己的缓存体系(GPU是DRAM,CPU是DRAM+Cache),以及数字和逻辑运算单元,两者都是为了完成“计算任务”而设计。
CPU:中央处理器 | GPU:图形处理器 |
---|---|
Center Processing Unit. 有限的多核,每个核都有大缓存和复杂的数字逻辑运算单元,需要高效处理大量的分支跳转和中断请求,并辅助众多加速分支判断甚至更复杂的逻辑判断硬件进行逻辑运算。 | Graphics Processing Unit. 核数为众核(NVIDIA Fermi有512个核)。每个核的缓存较小,数字逻辑运算单元少而简单,面对的是类型高度统一、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。 |
CPU特点 强控制弱计算 擅长处理具有复杂计算步骤和复杂数据依赖的计算任务 | GPU特点 强计算弱控制 计算量大,但没什么技术含量,而且要重复很多很多次 |
实际情况:混合型应用的处理逻辑,CPU和GPU是结合起来一块使用的
密集计算代码由GPU负责完成,剩余串行代码由CPU负责执行。
GPU技术在数据中心虚拟机的应用
Soft GPU技术:软件GPU,适用于看图等轻量级的3D场景(有的软件安装时会检测GPU,有的软件只支持硬件GPU的就不适用这种场景)
① 3D应用程序:发起图形渲染命令
② Soft GPU调度器: CPU模拟GPU运算,调用物理CPU执行渲染和编码命令(实际上是没有物理的GPU卡,通过CPU模拟GPU的计算)
③ VDI Agent:加速前端,向3D应用程序提供接口支持
④ 瘦终端:接收H.264视频编码流并显示
HEL:硬件仿真层,当虚拟机上虚拟硬件不支持Direct3D的某些高级功能时,HEL会通过软件运算来模拟硬件运算;
HAL:硬件抽象层,服务器硬件制造商提供,提供简单的设备驱动程序接口, Direct3D可以通过它直接与图形硬件对话,无需关系底层硬件的类型。此外,利用HAL提供的图形硬件加速功能,可以绘制出更高效和高质量的呈现效果。
GPU Passthrough技术:GPU直通技术,适用于大型渲染建模场景
技术原理:服务器的GPU以直通方式分配给虚拟机,这样虚拟机就可以使用GPU获取3D加速能力;(一对一的关系,一张GPU显卡对应一台虚机)
优势:
软件兼容性好,性能高,但成本高,推荐场景:
① 全媒体编辑中高清视频渲染合成处理或是多轨120M高清视频编辑的场景;(适用于融媒体场景)
② 高清制图中复杂图纸编辑、图纸总装或者体验要求苛刻的用户场景;
限制:
① GPU直通的虚拟机不支持HA;(GPU虚机因为和底层GPU硬件绑定,不支持高可用技术)
② 受服务器空间和供电的影响,密度有限;(底层服务器上的GPU卡接口有限,所以可使用的GPU虚拟机也是有限的)
vGPU技术:GPU虚拟化技术,现阶段最主流的一款技术(vGPU技术是一对多的关系,一张物理GPU显卡可以对多台虚机)
技术原理:
① 虚拟化平台将一块物理显卡虚拟化多个虚拟显卡,每个GPU虚拟机可以绑定一个vGPU,满足3D应用的图形渲染需求;
② GPU硬件虚拟化虚拟机和GPU直通虚拟机一样,可以通过NVIDIA显卡驱动可以直接访问GPU硬件资源,具有与PC一样的性能和兼容性。
优势:
① GPU硬件虚拟化是在硬件显卡上实现的虚拟化,性能更高(比软件GPU的性能要高),具有具有与PC一样的性能和兼容性。
② 高密度并发,降低GPU用户成本,一块M10显卡最多可以支持64个(注:切分至64时不支持硬解码)中低端用户。对于中低端的3D应用及标清视频编辑需求,建议首推vGPU方案。
限制:
① 目前主要是Nvidia M系列、P系列和T系列显卡支持GPU硬件虚拟化;(硬件服务器要支持GPU显卡,GPU显卡要支持虚拟化技术)
② 基于KVM虚拟化的vGPU虚拟机不支持HA;(虚拟化层要支持vGPU驱动,KVM暂时不支持,Xen和VMware是支持的)
注:硬件服务器要支持GPU显卡、虚拟化层要支持vGPU驱动、瘦客户端也有一定的性能要求。在大型渲染场景下不仅对后端服务器有要求对前端的客户瘦终端也是有要求的。
解析:vGPU资源分配模式
- 每一个vGPU类型所对应的显存大小是固定的;(以英伟达M10为例,M10是32G的显存,有两个核心,每个核心是16G的显存,在英伟达场景下单核心只能按照一种显存大小进行切分)
- GPU引擎 (Graphics/Compute, Video Encode, Video Decode and Copy Engine) 共享模式,可以并行工作;
- 每一个vGPU在给其分配的时间片期间独占所有CUDA资源;(分配给一个虚拟机使用的vGPU资源在虚拟机开机时只能是它独占使用,只有在虚拟机关机的状态下vGPU资源才会被释放出来给别的虚机使用)
- 并发连接数授权方式;(一台vGPU虚拟机在开机时就会占用一个vGPU许可,只有在虚机关闭之后许可才会释放,才会允许下一个虚机来占用这个许可)
NVIDIA vGPU场景显卡型号及许可类型
NVIDIA数据中心级vGPU场景常用显卡:数据中心级还是英伟达显卡较多(也有少数的Intel和AMD的显卡)
参考链接:https://www.nvidia.cn/data-center/graphics-cards-for-virtualization/
- Tesla系列:特斯拉系列显卡,大部分都是PCIe接口类型的显卡,P6的接口是MXM面向的是刀片服务器
- Quadro系列:这个系列的显卡只用于专业制图系列
NVIDIA vGPU场景显卡对比:GPU显卡一般比较的是CUDA核心数和显存大小
- CUDA核心数越大计算性能越好;显存越大可以切分出更多的GPU显存给虚拟机使用;M10面向密度做了优化最小可以切分到0.5GB的显存大小;P6是针对刀片服务器的。
- 散热方式分两种:一种是主动散热(自带风扇,CPU)一种是被动散热(利用服务器风道进行散热)
NVIDIA vGPU授权方式:
vApp:虚拟应用场景(多个应用软件共享一张物理显卡)
vPC:虚拟桌面场景(一个用户使用一个OS)
Quadro vDWS:虚拟工作站版,专业3D图形渲染场景
NVIDIA vGPU授权选型:
NVIDIA vGPU方案选型举例及注意事项:
注意事项:
1、3D场景的服务器推荐CPU主频3.0GHz以上,单台服务器支持的虚拟机密度受限于显卡自身的显存和CPU性能
2、桌面虚拟机推荐配置:Win10(强烈建议):64位,vCPU:2路2核,vRAM:8-16G(内存因项目而异,直接按照:单个虚拟机的内存X单台服务器承载的虚拟机数量X120%即可算出总的内存量),vGPU:1~8G显存
3、vPC授权模式下最大只支持2G显存
4、显示器分辨率需调研清楚,如果是看4K视频或图片,那至少vPC@2G显存。如果是4K渲染和视频编辑,那至少vDWS@2G显存
5、多屏显示的数量也跟vGPU授权息息相关,决定了显存的分配方式
6、按照项目经验,不做渲染的情况下使用M10性价比高,做渲染的情况下优选T4、备选P40
7、重要:重视需求调研,尤其是以前PC的配置和软件清单,必须了解清楚!
NVIDIA vGPU虚拟机搭建指导
vGPU虚拟机架构:
需要NVIDIA GPU硬件、NVIDIA GPU虚拟化软件产品和软件许可来运行vGPU虚拟机
Server层需要GPU显卡,在装完HyperVisor层之后需要在它之上装英伟达的虚拟化软件,在虚拟机里面需要装英伟达的显卡驱动
vGPU虚拟机安装配置流程:
步骤:
1、硬件显卡安装(注意电源功率)
2、虚拟层安装英伟达的虚拟化软件
3、部署虚拟机的时候给虚拟机分配vGPU资源
4、安装vGPU的许可服务器
5、虚拟机内安装英伟达显卡驱动并连接到许可服务器
NVIDIA显卡硬件安装说明:
英伟达的显卡功率一般在200-300W之间,普通的PCIE插槽是满足不了显卡的供电需求的(普通PCIE插槽供电是75W),需要安装辅助的电源;服务器电源一般是550W,但是在显卡场景下建议配置1100W的电源模块。(除了英伟达T4显卡,T4显卡的功率是70W)
参考文档:《英伟达显卡辅助电源线说明书》
虚拟化层驱动安装:
在物理服务器上安装HyperVisor后,需要安装最新的NVIDIA GPU虚拟化软件
注意:Maxwel架构的M60和M6显卡需要切换GPU模式(计算模式和图形模式),Pascal架构的系列显卡vGPU方案中只需要关闭ECC模式即可(ECC模式是一个显卡错误检查和纠正功能,它能提高数据的正确性,但是会消耗显卡的性能)
参考链接: https://docs.nvidia.com/grid/index.html
给虚拟机增加vGPU资源:
切分vGPU资源,分配给虚拟机使用
H3C Workspace vGPU分配
Citrix Xen vGPU分配(英伟达M60的显卡,8Q/8A,8代表分配的显存大小,Q代表虚拟工作站授权模式,A代表虚拟应用的授权模式)
VMware vGPU分配
vGPU许可服务器安装:
1、到英伟达官网License Center键入购买的PAK ID,激活授权,获得许可证信息
2、在Product Information中下载适配的安装软件
3、创建一台Windows Server/Windows 10虚拟机作为vGPU许可服务器,安装jre运行环境(总是,也就是Java的运行环境),确保静态IP,MAC地址固定,时间同步,并安装英文浏览器(如chrome浏览器,语言选英文)
4、在许可服务器里安装许可证服务器软件程序,XX-ls-software里面的setup.exe文件
5、在英伟达License Center输入许可证服务器的MAC进行注册
6、选择Map Add-Ons,为许可证分配一定数量的授权,点击 Download License File,获得.bin文件
7、在许可证服务器上打开英文浏览器访问http://localhost:8080/licserver ,点击Upload上传许可证文件
参考链接:Virtual GPU License Server User Guide
虚拟机内安装NVIDIA驱动并连接许可服务器:
1、虚拟机内安装对应版本的NVIDIA vGPU驱动软件
2、在虚拟机里NVIDIA控制面板中连接搭建好的NVIDIA许可服务器,给vGPU授权。(默认端口号7070,可在安装许可服务器时修改)
最新版本的英伟达vGPU显卡可以支持搭双机许可服务器的来保障许可服务器的高可用的
参考链接:Virtual GPU Client Licensing User Guide
NVIDIA & H3C构建全场景GPU云平台:
GPU资源云端集中管理,按需为不同场景提供资源