400-076-9985
GPU虚拟化@Intel专家|KVM热门技术知识分享
作者:admin 发布时间:2020-10-20 访问次数:4330
简介
大家好。我是来自intel的冯少合,在这里给大家分享一些GPU虚拟化相关的话题. 在intel做GPU虚拟化相关的同事,很多都是专家。群里有虚拟化的专家吕志远,和云计算专家程盈心,跟我一起做相关的介绍,和Q&A。

首先非常感谢邀请,能够和大家一起分享、讨论一些热门技术,也非常感谢今晚主持人杨轩,一直忙前忙后的筹备本期分享,最后感谢各位听众对我分享的技术感兴趣,希望和大家一起探讨、学习、共同进步!

GPU虚拟化的状况
虚拟化技术发展到现在,已经比较成熟了。CPU, 内存,存储,IO设备等都已经可以虚拟化,可以实现多个虚拟机实例共享同一硬件资源。

而GPU(图形处理器单元)作为计算机的一个很重要的组成部分,其浮点运算和并行运算速度可以比CPU都强。但是在虚拟的技术中, QEMU对GPU虚拟的支持,很长时间都是纯粹的软件模拟,并没有充分利用硬件GPU的资源,性能大大折扣。

GPU密集工作性负载,对高性能GPU虚拟化的需求越来越强烈。如:

3D/2D 图形加速

           游戏
           VDI

Media Transcoding

           视频会议, CDN

高性能计算(GPGPU)OpenCL/CUDA
       Geometric computing, Scientific computing, Machinelearning
       Bioinformatics, Finance, Medical industry,Meteorology
       Personalized medicine, drugdiscovery,Big Dataanalytics
佳联云终端厂家
顺应潮流,这几年, NVIDIA、AMD和intel相继推出自己的基于硬件的虚拟化解决方案。
AMD: 其GPU虚拟化解决方案是完全基于业界标准的SR-IOV(单根输入输出虚拟化)。这是由PCI SIG组织开发的一种规范,为设备的硬件虚拟化应用提供了标准化方法。其能够允许多达15个虚拟化桌面共享同一个图形处理器,其最终用户就能够同等地访问GPU,无论他们是何种工作负载,而且不会有任何性能上的损失。
SR-IOV标准允许一个GPU给多个虚拟机共享使用,因此为每一个用户都提供了虚拟化的性能进行设计、创造并且执行他们的工作负载,而没有一个用户会占据整个GPU。由于硬件的复杂性,目前支持的GPU厂商只有AMD。

NVIDIA:没有像AMD那样使用的基于硬件的GPU虚拟化技术。其虚拟化方案是称为Grid桌面虚拟化技术,该技术是基于它最新的Tesla GPUs的。NVIDIA的虚拟化方案比较有意思的一个特色是可以虚拟出几种不同model的虚拟显卡。 FloridaAtlantic University基于NVIDIA GPU 虚拟化方案的VDI已经有几年历史了,他们称,可以使用8-12个虚拟化桌面同时共享一个GPU 板卡。

IntelGPU虚拟化解决方案
做为intel的员工,今天的重点还是要介绍intel自己的GPU解决方案。Intel有三种GPU虚拟化的方法。
佳联云计算
API转发(GVT-S)
将openGL或者DirectX的API转发给host上的Graphics Driver上。
优点:性能佳、可以共享。
缺点:功能滞后。

直通设备(GVT-d)
利用VT-d将显卡直通给虚拟机。
优点:性能佳、功能完备。
缺点:不能共享。

完全GPU虚拟化(GVT-g)
优点:性能佳、功能完备、可以共享

Intel的完全虚拟化解决方案包括软件和硬件方案。可以将GPU直通给多个虚拟机,可以在性能,功能,共享方面达到很好的平衡。

由于在共享和性能方面的平衡,intel的GVT-g 是很值得推荐的。

Intel KVMGT技术

KVMGT 是Intel® 完全GPU虚拟化(GraphicsVirtualization Technology GVT-g) 的KVM实现,是VGT-g的纯软件方案。其mediatedpass-through相当于软件实现的GPU分时复用,不同于SR-IOV。


KVMGT从intel的broadwell处理器开始支持。

其性能:

3D性能可以达到host的80%以上。

2D性能可以达到host的70%以上。

Media解码能力可以到host的90%以上。

Media转码能力可以到host的80%以上。

KVMGT支持的Features

可以运行native的driver。

DirectX*11.1

OpenGL*4.2

OpenCL*1.2

MediaSDK16.2

DirectX*12

支持的不同操作系统的guest数量:

MultipleVMs up to 7

SupportUbuntu* Guest

SupportWindows* 7 x32/x64

SupportWindows* 8 x32/x64

GuestWindows* 10 x64

目前支持的远程显示协议:

虚拟化技术in openstack

目前,Openstack 对于AMD的GPU虚拟化是应该支持的。因为AMD每个SRIOV的GPU可以作为PCI设备pass-through到guest。

Citrix 提出了2个版本的方案支持Nvidia和 XENGT(VGT-G的XEN实现)。

第一个版本是基于on-demand的方案,社区感觉有些复杂。之后他们提出了一个新的方案,pre-define的方案。pre-define的方案,预先定义虚拟的GPU(VGPU),定义好之后,数量不能修改了,并且通过openstack的代码,做hack,将每个pre-define的VGPU作为SRIOV设备,并且每个设备分配一个虚拟的PCI  BDF号,该BDF号只有Openstack可见。社区比较倾向这个方案,但是还没有得到approve, upstream还需要时日。

对于KVMGT,可以在Citrix实现基础上,比较容易的实现。

对于企业来说,如果业务需求,需要GPU的虚拟化,自己完全可以很快的基于Openstack实现自己私有的GPU虚拟化方案,没有必要依赖社区。

对于不想做开发的企业,我们会做一个KVMGT的demo,可以参考我们。

此外我们在巴塞罗那的峰会,提交的一个KVMGT的topic,《enabling GPU virtualization in Openstack》,感兴趣的同行可以支持一下。

谢谢。
 

QA

1、2vm的时候,每个vm能跑到native的多少性能?比如3dmark11

答:2个VM我们一般是统计性能之和。每个VM 3dmark11的数据大概是native的vm的分数一半多一点

2、enabling GPU virtualization in Openstack这东西在那里能看到?

答:现在可以看到摘要,也可以投票,https://www.openstack.org/summit/barcelona-2016/vote-for-speakers/

3、intel的显卡是集成在主板芯片上的吧?

答:Intel目前的显卡是和CPU集成的,不是在主板上。

4、多谢专家的介绍,请问windows 客户操作系统需要安装什么样的驱动,在哪里可以获取; 对spice的支持怎么样,虚拟的GPU和spice是怎么整合的,谢谢

答:windows的驱动直接从Intel官网下载,跟裸机上跑的驱动是一样的。KVMGT发布时候会给定一个驱动版本号,那个是QA经过测试的版本

5、你好,从Intel的角度看,现在kvmgt是处于什么状态,demo,beta,还是可商用?另外对于spice协议支持的代码什么地方可以获取?谢谢。

答:SPICE的支持目前处在POC阶段。可以用但是性能并不好,原因是对VM的每次屏幕刷新需要一次拷贝。这一块有优化的解决办法,我们正在做.

6、主板集成的显卡,能用KVMGT么?最多能带多少VM?

答:KVMGT只支持Intel的GPU,从Haswell开始,更老的用不了,以后upstream的代码从Broadwell开始支持
7、GVT-d现在已经upstream了吗?
答:redhat最近有一个博客详细描述GVT-d的支持,在VFIO里,可以看下。http://vfio.blogspot.com/2016/07/intel-graphics-assignment.html
8、直播云这个词现在经常听到。是否用到这个技术,

答:“直播云”或“视频云”,也许会是潜在的应用,目前应该是以bare metal机器为主我猜。

9、gpu对网络的优化有没有改善 ?

答:这个可能跟GPU的虚拟化并没有特定的关系,gpu不负责网络优化。如果想在固定带宽内做数据压缩,intel有QAT技术,支持硬件的压缩。
10、GPU可以实现在kvm下面动态调整显存吗?或者说指定对应虚拟机的显存
答:我们目前是只支持静态显存设置,是在启动VM之前。动态显存是个很好的问题,目前没有支持,看需求。
11、对CPU有限制吗?比如skylake的Pentium的GPU可以用GVT-d吗?
答:唯一的要求是有GPU。GVT-d就是指的VT-D,支持VT-D的机器都可以

12、这类显卡的视频处理是否只是并发4路,如果是的话,与1:7 VMs不匹配啊

答:并发路数应该与VM个数没有关系的。可以起7个VM,每个里面处理多路并发

13、我想问的是:(GVT-g)的方式是不是这样的,VM里面看到的是整个物理的GPU,访问方式是利用pass-through直接对GPU进行访问,但是要多个VM同时访问的话,这个调度是在hypervisor来调度、还是VM的驱动来调度?还是GPU的硬件来调度?

答:KVMGT是完全由软件调度的。显存的访问是pass-through的。KVMGT内部对显存做了partition。这是个好问题

14、请问我的物理机上如果有多块显卡,我如何分配指定给特定的虚拟机呢?

答:向OpenStack请求启动虚拟机是通过选择flavor来确定CPU,RAM,DISK的,我们的计划也是在Flavor中的extra_spec里面实现GPU类型的选择。所以GPU的分配是在虚拟机启动的时候由nova选择的。

15、请问我的物理机上如果有多块显卡,我如何分配指定给特定的虚拟机呢?

答:KVMGT只支持Intel的集成显卡,不会遇到多块显卡的问题

问:这样啊!那这个技术对于机器学习有帮助吗?

答:对于机器学习目前IntelGen graphics的运算能力还有差距,并不是Intel主推的机器学习平台

16、不同的VM之间做context switch的时候,GPU的pipeline是不是要完全flush?这个context是i915的驱动来管理的吗?

答:我们目前switch的时间点是GPU idle,就是说当前VM所发的任务跑完了。context的管里是一个实现问题。我们目前的实现里面:guest的context是做了shadow,影子context是由i915管理

17、VM内的多路并发没问题,但性能不足下的多路,浪费调度资源,设计合理性方面是否需要慎重考虑

答:是的,确实是。虚拟机之间的调度是存在性能损耗的

18、KVMGT什么时候可以upstream?

答:KVMGT目前正在进行upstream。我们主要的代码是改在kernel i915驱动里面。其中有一部分是驱动本身的扩展,更主要的一部分是虚拟gpu模型。目前第一部分已经upstream了,第二部分会作为英特尔GPU驱动的一个子模块,目标是今年upstrem到linux kernel,

19、openstack和Citrix虚拟化那个好,用户交付来说

答:OpenStack可以提供更全面的公有云,私有云和混合云的解决方案,提供计费,租户管理,网络,存储个类服务,和Citrix的关注点有所不同。

openstack 是云计算,原则上可以支持各种GPU虚拟化技术。 对于用户交付来说,Citrix应该是商业软件,他们应该交付好些吧。

20、gt技术3d画面是不是只是放在显存里没有export出来?有没有可能直接吧显存里渲染好的画面送到硬件视频编码给host上的协议服务端?能支持7个vgpu是并行的吗还是只是用某种方式分享一个物理gpu的时间片?听说intel的芯片带了视频编码硬件 这个和gpu部分是一起的还是一个独立的部分 也就是说用硬件视频编码的同时3d渲染的性能会不会下降?

 答:也是很好的问题。3D渲染出来的结果是可以直接做硬件编码的。这也是我们SPICE优化想做的事情 ,Intel有硬件编解码的fix function,与3D渲染有一定的并发性。但是3D和media操作还是有共用的单元,存在相互影响,KVMGT对GPU运算单元是分时共享。不是并发的。
推荐文章
上一篇:什么是服务器虚拟化,虚拟化知识分享!
下一篇:助力大数据发展 2015可信云服务大会召开
技术服务
桌面云部署
软件下载
经典案例解析
问题解答
云终端解决方案
友情链接
教育装备网
政府采购网
企业级大数据云计算平台
云计算资讯
联系我们
咨询热线:400-0769-985
联系电话:13288889856(业务)/13713681586(技术)
客服邮箱:kehu@senyuglo.com
公司地址:中国广东·东莞市南城区联发信息产业园八栋六层