免费服务热线:400-668-3769
新闻资讯 news

gpu虚拟化@intel专家|kvm热门技术知识分享

来源:sharevdi  时间:2016-08-04   阅读:1638

简介

大家好。我是来自intel的冯少合,在这里给大家分享一些gpu虚拟化相关的话题. 在intel做gpu虚拟化相关的同事,很多都是专家。群里有虚拟化的专家吕志远,和云计算专家程盈心,跟我一起做相关的介绍,和q&a。

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

gpu虚拟化的状况

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

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

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

           游戏
           vdi

           视频会议, cdn



顺应潮流,这几年, 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虚拟化的方法。

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

 

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

57a2abcde1d96.jpg

intel kvmgt技术


kvmgt 是intel® 完全gpu虚拟化(graphicsvirtualization technology gvt-g) 的kvm实现,是vgt-g的纯软件方案。其mediatedpass-through相当于软件实现的gpu分时复用,不同于sr-iov。

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

其性能:


kvmgt支持的features


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

 

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

虚拟化技术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运算单元是分时共享。不是并发的。


上一篇:桌面云给大家带来了什么?

下一篇:amd a6-1450低功耗cpu成虚拟化云桌面(vdi)最佳硬件选择

分享到:
0

copyright © 2015 深圳市华科智能有限 粤icp备15042832号-6