在Horizon 6.1的版本里面,VMware宣布了支持NVIDIA GRID vGPU功能,那么vGPU到底是神马东西,今天我们就来说道说道。

 

首先我们需要先了解一下什么是图形处理器(GPU)。图形处理器(GPU)是专门用来协助处理图形密集型的应用程序计算的。3D程序,例如Siemens NX, AutoCAD等就是典型的图形密集型程序,这类程序一般都会调用OpenGL或者DirectX接口来调用GPU的计算资源来完成复杂的图形处理计算。像航空,汽车制造,建筑,医疗等各种行业都会用到各种各样使用专业GPU的图形处理程序。

 

那么图形处理器(GPU)和虚拟化怎么有了关系呢?主要基于两方面的原因:第一,经济性;第二,安全性。首先说一下经济性的原因,传统的配置了专业图形处理器的图形工作站一般价格昂贵,人手配备一台,显然使用效率不高,ROI偏低。第二关于安全性,一般图形工作站的工作成果,例如汽车行业的汽车设计模型,数据对企业来说是极为重要的,企业希望有更强的方式来保护企业的知识产权不会泄露出去。

而通过将GPU虚拟化是一个能够兼顾经济性和安全性的方案,将图形处理器(GPU)放置在数据中心的虚拟化服务器资源上,用户共享GPU计算资源,提高了昂贵的GPU资源的使用效率,另外一个方面,用户所有的数据都保存在数据中心,用户本地不保存任何数据,IT管理员可以对数据中心里面的VM实施集中的安全管控,大大提高了数据安全性。

 

下面我们来了解一下VMware在图形处理虚拟化方面的技术发展。在VMware宣布支持NVIDIA GRID vGPU之前,VMware有3种3D图形处理的虚拟化技术,Software 3D ,vSGA,vDGA。

Software 3D – VMware自己开发一个 VGA 驱动(内嵌在VMware Tools中),该驱动能够通过软件实现OpenGL或者DirectX的部分接口,然后图形处理程序调用该VGA驱动来进行图形处理。需要指出的是,该VGA驱动没有使用任何GPU的硬件处理能力,完全利用CPU来进行图形处理,它的图形处理能力是很有限的,只有在CPU的负载不大,某些非常轻量级的图形处理运算,我们才可以考虑该技术。

vSGA(VirtualShared Graphics) - vSGA依然使用Software3D相同的VGA驱动,不过比起Software 3D进了一步,vSGA可以将计算负载分担到图形处理器(GPU)硬件资源上,从而实现硬件加速。vSGA技术可以将GPU的计算资源划分为多个虚拟显卡,具体数目的限制取决每一个虚拟机分配的虚拟显卡的内存(最大512M)和GPU上的物理内存的大小。这种技术需要GPU生产厂商提供一个ESXi .VIB驱动,所以不是随便一种GPU显卡都能使用vSGA技术的,目前 只有NVIDIA 和 AMD 两家厂商的特定型号的GPU可以支持vSGA,在它们的网站上可以找到对应的ESXi .VIB驱动。

vDGA(Virtual DedicatedGraphics) – 如名字所指出的,虚拟专属显卡,意味着一个物理显卡的计算资源被一台虚拟机所独占。当用户在一个物理主机上安装了物理GPU显卡以后,该显卡可以直接被ESXi服务器所识别,进而在虚拟机的硬件列表中显示出来。这种技术适用于对图形处理的深度使用的高级用户。

综上,我们可以看出,Software 3D,vSGA, vDGA从软件CPU模拟,GPU分片硬件加速,到GPU独占,对GPU到的硬件计算能力的利用是递增的。

聊一聊Horizon vGPU技术_vGPU

 

那么问题来了,已经有了上面这三种技术,为什么还要有vGPU,它的定位是什么呢。简而言之,vGPU就是在介于vSGA和vDGA之间的,在自由度和功能上取得了更好平衡的技术。它允许用户按照NVIDIA的规范对GPU的计算资源进行切分,还可以进行相应的组合来满足不同图形计算资源需求的用户的要求。目前只有NVIDIA一家厂商的GPU显卡(K1和K2两种显卡)能提供支持vGPU技术。NVIDIA提供了一个ESXi .VIB驱动来调度管理VM对GPU显卡应用资源的使用,NVIDIA还提供了一个安装在VM上的显卡驱动,这样图形处理程序调用OpenGL或者DirectX接口来使用分配给虚机的显卡硬件资源。

聊一聊Horizon vGPU技术_vGPU_02

用户可以参看在NVIDIA的官方网站http://www.nvidia.com/object/vmware.html,查阅vGPU显卡的各种指标规范,以及安装配置文档。

 

下图就列出了K1/K2支持的支持的用户数以及相应的性能参数。例如K2显卡最多切分给16个用户来使用。

 聊一聊Horizon vGPU技术_ Horizon_03


如果你想自己体验Horizon vGPU, 很简单,首先,你要有一个Horizon 6.0的环境,然后还要有一张NVIDIA K1或者K2 显卡,参看参看文档http://www.nvidia.com/object/grid-vgpu-deployment-guide.htmlstep by step就好了。

 

 

关于作者:Sam ZhaoEUC解决方案部门经理。在软件开发,测试,项目管理方面有13IT从业经历,发表过三个专利以及合著书一部。