1、引言
自2007年IBM和Google提出云计算的概念后,云计算得到了快速发展,并且已经有部分技术成功地融人了商业应用中。云计算将“云”中的各种软硬件抽象为各种资源,并作为服务对外提供。当前,最典型的代表有Amazon Web Services、Microsoft Azure以及Google App Engine。从类别上区分,上述三者更多偏重于数据的存储与管理,并在其基础上提供各种扩展的服务,因此可认为是一种“存储云”。即,上述三者都是对计算机存储能力的抽象与扩展。除存储云外,还有卫生云、电子政务云以及制造云等不同领域的云计算细分,它们分别对各自领域内的资源进行抽象与整合,并在此基础上提供更高级的服务。
然而,上述的云无法满足计算机图形发展的需求。一方面,图形学的快速发展使得当前世界对于计算机图形渲染能力的要求越来越高,而单机单图形加速卡的能力不管如何快速进步,总是在一定程度上落后于需求,从而造成瓶颈。存储云能够整合计算机集群的存储能力,满足当前世界对存储能力的巨大要求,因此自然可以联想到解决上述瓶颈的办法是将多机多图形加速卡的渲染能力进行整合与抽象,并作为服务提供。由此,产生了渲染云的概念。另一方面,每种技术发展到一定阶段都会出现细分的趋势,渲染云作为云计算的特定细分,正是适应了此种趋势。此外,Michael Armbrust、Armando Fox等人也认为,将对计算能力敏感的应用程序扩展到云是云计算发展过程中一个崭新的机会,而3D渲染则是其中最典型的代表。因此,对于渲染云的研究具有很重要的现实意义。
虽然渲染云与卫生云、政务云等都具有注重资源的整合与调度以及将抽象的资源作为一种服务提供给最终用户的能力特点,但谊染云与它们存在较大不同。从技术上看,卫生云、电子政务云等基础首先是对于信息的获得以及存储,因此其最底层的实现依赖于集群的存储以及检索能力;而渲染云主要针对图形渲染等需要大量浮点运算的场景,因此更加注重计算资源的整合与抽象,其基础是如何对于集群图形加速能力进行抽象与高效输出。
本文将首先介绍与渲染云相关的工作,之后对几种不同的虚拟机3D图形加速技术进行分析与比较,讨论将这些技术融入渲染云的可行性;接下来对虚拟化3D图形加速集群技术进行研究;之后,在渲染集群基础上,提出一个灵活、能够支持不同设备协同工作的、基于虚拟化技术的渲染云框架;最后是总结和展望。
2、相关工作
云的实现,需要结合多种技术,虚拟化技术则是其中最重要的技术之一。对于渲染云而言,虚拟机的图形加速功能极其重要。然而从虚拟化的角度来说,实现这一功能并不简单:一方面,图形处理器(graphic processor unit,GPU)是为图形实时渲染量身定制的,特点是具有超长的流水线以及并行计算,因此对其进行软件模拟十分复杂;另一方面,GPU的硬件接口受版权保护,许多技术细节被视为商业机密,因此开发者难以取得足够的技术规格来说明虚拟化GPU;此外,GPU的结构以及硬件接口经常发生变化,且规格众多,这也为对GPU进行虚拟化造成了困难。
虽然对GPU进行虚拟化有较大困难,但是虚拟机环境下的图形加速功能并非无法实现。目前已有几种不同的实现虚拟机3D图形加速的方案。单独的方案主要有VMGL;内嵌于虚拟机的加速方案则主要有VMware Workstation、Xen和VirtualBox。
当前与渲染云直接有关的工作主要是Chromium OpenSG和VRJuggler等分布式的渲染项目以及Nvidia的渲染云计算平台RealityServer。
Chromium、 OpenSG和VRJuggler等分布式的渲染项目,主要考虑的是如何把一个大的渲染任务分成小块交给不同的设备完成;而云的概念强调如何将分布在各处的计算资源整合成一块足够大的计算资源。此外,这些项目也没有考虑对于虚拟化技术的支持,因此与渲染云仍有不少差异。
Nvidia的渲染云计算平台RealityServer主要利用Tesla RS硬件和RealityServer软件来完成对渲染云的软硬件支持。在硬件方面,该平台必须使用Nvidia的RealityServer RS服务器集群,同时需要配合RealityServer软件使用,因此RealityServer对于平台的软硬件都进行了限制。此外,该平台不支持各种不同的图形加速设备协同工作,对于希望利用渲染云方案整合现有渲染资源、提高资源使用率的企业而言,并非理想的解决方案。
针对上述两方面工作各自的不足,本文以虚拟机3D图形加速技术为基础,对其进行分析和比较,在此基础上对支持虚拟化技术的、能够支持多种图形加速设备协同工作的渲染云框架进行研究。
3、虚拟机3D图形加速技术分析及比较
3.1虚拟机3D图形加速技术
虚拟机3D图形加速技术目前主要有VMGL,VMware ,Xen以及VirtualBox等。
3.1.1 VMGL
VMGL(virutal machine library)是一个虚拟化环境中OpenGL渲染加速的解决方案,旨在为虚拟机环境提供硬件图形加速功能。VMGL通过利用硬件进行渲染加速来解决虚拟机中3D应用程序性能低下的问题。它基于Chromium和TightVNC两个开源项目,并在其基础上整合发展而来。
VMGL主要由Guest端与Host端两部分组成。Guest端主要是在虚拟机中实现一个虚拟OpenGL库,该虚拟库用于替代虚拟机中的OpenGL库,从而达到欺骗应用程序、截获OpenGL命令的目的;同时,该虚拟库通过网络将截获的OpenGL命令打包发送给宿主机中的VMGL Host端。VMGL Host端接收到虚拟库发送的命令之后调用宿主机中的OpenGL库执行,从而为虚拟机提供了硬件3D图形渲染加速功能。
3.1.2 VMware
VMware对于虚拟机3D图形加速的方案集成在VMware产品中,其典型代表是VMware Workstation。
VMware方面通过提供虚拟化的GPU设备来实现虚拟机硬件3D图形渲染加速。即VMware为虚拟机提供了一个虚拟的GPU,同时为该GPU分别编写了安装在Host OS与Guest OS中的设备驱动。工作时,VMware通过Guest OS中的驱动程序得到应用程序的命令,并且通过该驱动与Host OS中的驱动交互;Host OS中的驱动则可直接与硬件(即GPU)交互,从而实现了硬件渲染加速功能。
3.1.3 Xen
Xen的虚拟机3D硬件图形加速功能也与Xen本身紧密结合。其主要设计思想是利用IOMMU技术,使得Domain U中的应用程序所发出的命令能够直接到达显卡执行。渲染完成后,渲染结果通过ICA协议传回原图形应用程序。
3.1.4 VirtualBox
VirtualBox对于虚拟机硬件图形加速的支持较晚,性能对比VMware以及Xen也稍弱。其主要原理与VMGL相似,同样基于Chromium项目,但是渲染完成后图像回传至原应用程序时,基于TCP/IP传输。
3.2各技术的比较
本文主要着眼于基于虚拟机硬件3D图形加速技术实现渲染云,因此对于上述技术的比较,主要考虑其是否方便改动、是否利于扩展以及利用这些技术实现渲染云的可行性。
VMware的3D图形加速解决方案性能较好,但是由于其方案内置于VMware的产品中,因此决定了利用VMware的方案组建渲染云时所有的宿主机上都必须安装相同的VMware产品,这就限制了渲染云内部配置的灵活性。此外,由于VMware方面依靠虚拟GPU来实现硬件渲染加速,因此每当GPU有较大幅度升级时,虚拟GPU都必须随之升级才能保持性能优势。同时由于业界GPU产品一直处于快速升级的状态,因此该方案的工作量极其庞大。最后,由于VMware的产品皆为商业产品,因此对其进行改动、扩展都非常困难。
Xen与VirtualBox虽然都是开源项目,可以对其进行改动,但是两者的解决方案均与其自身的虚拟机紧密结合,存在较大的祸合性,因此一方面改动难度较大,另外一方面扩展性也受到限制。
VMGL则与前面三者不同,是一个VMM-Independent(virtual machine monitor,虚拟机监控程序)的项目。
由于VMGL是VMM-Independent的项目,因此VMGL并不依赖于特定的VMM(virtual machine monitor,虚拟机监控程序),只要有Guest OS与Host OS、VMGL就可安装。故使用VMGL的方案不会对渲染云使用的VMM类型造成限制,渲染云可以根据需要灵活决定配置。VMware ,Xen以及VirtualBox三者的图形渲染加速方案与其产品本身结合在一起,无法独立存在。因此,VMGL的配置灵活性优于上述方案。
此外,由于VMGL的Guest端与Host之间的通信全部基于网络,因此Guest端与Host端均可独立存在。由此扩展,VMGL的Guest端与Host端可以不安装在同一台物理机器上,甚至Guest端根本不安装在虚拟机中,而是安装在GPU性能较弱的物理机器上。此类对方案的使用可认为是对方案的扩展,VMGL可以无需修改便实现,其余三者则均无法实现。因此,VMGL的可扩展性优于其余3种方案。
最后,VMGL是一个开源项目.且项目中不包含与虚拟机硬件3D图形渲染加速无关的部分,故对其进行改进与扩展较为方便。
综合上述对于虚拟机硬件3D图形加速方案的分析,本文认为在VMGL方案的基础上进行改进与扩展、实现渲染云是最具有优势的做法。
4、虚拟化图形加速集群技术
虽然利用VMGL技术实现渲染云具有较高的优势,但是由于VMGL的设计初衷并非实现渲染云,并且VMGL本身也不太完善,因此首先需要对VMGL进行改造,使其支持远程渲染;之后在此基础上,进行集群渲染技术的研究。
4.1支持远程渲染的VMGL
4.1.1支持远程渲染的VMGL框架
VMGL本身还处于开发初期,同时从渲染云的角度来看还存在渲染结果无法回传、网络传输效率不高等缺陷,因此首先需要对VMGL进行改造与完善。图1所示为VMGL的框架结构。
从图1中可以看出,VMGL截获的应用程序最终的渲染结果只是在Host OS中一个名为Viewe:的VMGL组件中显示,并没有传送回Guest OS中原本的图形应用程序。从渲染云的角度考虑,这是不符合使用习惯的、不自然的一种做法。因此,首先需要对此进行改进,使得图像能够传送回原应用程序。上述改进应对应用程序透明,即依然保持Guest OS中应用程序不需要修改的特性。目前,该部分内容已经实现,将在后文介绍。在修改完成后,VMGL框架中的Viewer则成为了冗余部分,从精简代码、提高程序执行效率的角度看,该部分有必要去除。
此外,VMGL的网络传输效率不高,因此该部分需要改造。VMGL的网络传输部分基于TightVNC整合而来。VNC系统的设计以RFB (remote frame buffeting)协议为基础.该协议传送的是简单的像素数据信息,不经过压缩,因此数据量很大,网络传输负担较重。考虑到3D渲染加速很多情况下都是对3D动画进行实时加速,同时渲染云需要并行地为多个请求提供服务,因此采用RFB协议必然造成巨大的网络负担。基于上述原因,需要对VMGL的网络传输部分进行改进,在尽量减小图像数据的同时,采用效率更好的传输协议,并对传输数据进行压缩。
4.1.2支持远程渲染的VMGL实现
对VMGL的改造目前已经取得一定成果,主要表现为应用程序图像可以回传至原窗口中,并且对回传过程中的图像进行了压缩,以初步减少图像数据的传输量。图2所示为目前的改造成果。
如图2所示,改造后,VMGL的渲染结果已经可以传回原窗口中。具体的原理如下:当宿主机中一帧画面渲染结束或者接收到显示图像的命令时,VMGL Stub从OpenGL渲染管线的帧缓冲区中读取该帧,并通过网络传送给VMGL Library,之后再由应用程序取得结果并进行后续操作。
考虑到图像传输过程数据流量很大,虽然RFB协议采用了差分传输的措施,但是现有网络传输能力仍然无法满足完全负载的情况,因此在VMGL的Host与Guest两端分别加人了图像数据的压缩以及还原部分,初步测试可以减少约2/3的数据传输量。此方法可以显著降低对网络负载能力的要求,但也在一定程度上提高了CPU的负载。
经过测试,在100 Mbit/s局域网环境、Intel Core i5 M520 CPU ,4 GB内存、NVIDIA GeForce 310 MB显卡的条件下,800 dpix600 dpi分辨率的远程渲染示例程序渲染结果压缩和未压缩的FPS以及网络带宽占用数据见表1。
4.2基于VMGL的渲染集群技术
现代云服务一般以集群为基础,并在此基础上融人新的特性。因此VMGL首先需要具备在集群上工作的能力,即VMGL必须能够整合多机、多显卡GPU,使其协同工作。
图3所示为利用VMGL组建渲染集群的结构示意。集群含有一个主节点和若干普通节点,普通节点仅负责接收相关命令并利用硬件进行渲染;主节点则是具体整合多机渲染能力的节点。
主节点的VMGL Host端增加了任务分割以及数据传输与组合两个功能模块。当应用程序有渲染要求时,首先由Guest OS中的VMGL Library和VMGL XExtension将渲染所需的OpenGL命令以及相关窗口命令发送到任务分割模块,由该模块根据普通节点的数量以及各自的渲染能力对任务进行分割;任务分割完成后,通过数据传输与组合模块将任务发送给对应的节点处理完成;所有节点的返回结果再由该模块组合形成完整的渲染结果发送回Guest OS中的VMGL Library供应用程序使用。
上述结构仅在主节点中增加了任务分割以及数据传输与组合两个模块,其余VMGL原有的部分几乎无需改动,但由此VMGL具备了在集群上工作的能力;同时任务分割模块可以配置各种分割策略或者将其组合使用,具有较高的灵活性。此外,由于VMGL Stub可以通过Host中的OpenGL获得直接利用GPU加速渲染的能力,集群对于GPU并无特定要求,因此,集群可以支持不同的GPU设备协同工作;最后,该结构也能较好支持集群扩展。
5、基于虚拟化的渲染云框架研究
5.1演染云服务
不同于渲染集群技术主要着眼于如何整合利用集群的渲染能力,渲染云更强调如何将这些整合的渲染能力作为服务提供给用户使用。
图4显示了渲染云服务的典型应用场景。
渲染云将内部的渲染能力整合作为服务提供给用户使用,因此,诸如图形工作室之类的用户一方面可以仅在需要时请求渲染服务,从而节省为员工每人配备图形工作站的硬件成本;另一方面,由于渲染云整合了多机渲染资源,提供了远高于单机的渲染能力,因此用户等待谊染完成所需的时间相比传统使用图形工作站的方式大大降低,从而提高了用户的工作效率。此外,在云端为集群安装桌面虚拟化相关套件还可扩展渲染云,使其同时能够提供桌面虚拟化的服务。
5.2墓于虚拟化的演染云框架
渲染云服务并不仅只是对于渲染集群的简单运用,还需要从系统层面考虑各方面内容。因此,本文在VMGL渲染集群的基础上,对谊染云框架进行了研究。
图5所示为基于虚拟化的谊染云框架。整个渲染云由一个主服务器及许多节点组成。主服务器负责对用户请求进行响应并对整个云进行管理,节点则负责完成具体的渲染工作。
主服务器主要分成用户接口层、策略层以及内部接口层。用户接口层主要工作为对用户请求进行处理并将最终结果反馈给用户。策略层则主要有用户管理、任务调度和负载均衡方面的工作。其中任务调度根据用户请求进行粗粒度的调度,即当用户请求被接受后,从节点中安排空闲的虚拟机运行用户的任务;负载均衡则根据每个节点反馈的负载情况对节点的任务进行调整。最后,内部接口层主要完成数据和命令的发送以及接收工作。
云中的其余每个节点都具有基于VMGL的渲染集群中主节点的功能。即当有任务到达时,Host中的任务管理模块可以将其分割并交给其余节点完成部分渲染工作;同时,每一个节点也接受其余节点发送的渲染任务并安排渲染。上述工作由任务管理模块完成。此外,渲染云每个节点Host OS中的数据传输与组合模块除完成渲染集群情况下的功能外,还负责将本节点的负载情况发送给主服务器。由于系统中其余部分对比渲染集群并无太大改动,渲染云也保留了基于VMGL的渲染集群支持不同设备协同工作、配置灵活以及扩展方便的特点。
6、结束语
渲染云能够将多机的渲染能力整合与抽象.并将其统一、强大的渲染能力作为服务给外界,从而满足当前世界日益增长的对于计算机渲染能力的要求。渲染云作为云计算在图形渲染方面的特定细分,正是适应了这种趋势。本文从虚拟机3D图形加速技术出发,逐步深入对渲染云相关技术进行了研究,并提出了一个基于虚拟化的渲染云框架。目前,已经完成对支持远程渲染的VMGL改造和渲染集群框架,后续将在此基础上对任务调度以及负载均衡等方面的内容作详细的比较与研究,并最终实现一个高效、配置灵活的渲染云。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于虚拟化硬件3D图形加速的渲染云框架