1、引言
自2007年IBM和Google提出云計算的概念后,云計算得到了快速發(fā)展,并且已經(jīng)有部分技術(shù)成功地融人了商業(yè)應(yīng)用中。云計算將“云”中的各種軟硬件抽象為各種資源,并作為服務(wù)對外提供。當前,最典型的代表有Amazon Web Services、Microsoft Azure以及Google App Engine。從類別上區(qū)分,上述三者更多偏重于數(shù)據(jù)的存儲與管理,并在其基礎(chǔ)上提供各種擴展的服務(wù),因此可認為是一種“存儲云”。即,上述三者都是對計算機存儲能力的抽象與擴展。除存儲云外,還有衛(wèi)生云、電子政務(wù)云以及制造云等不同領(lǐng)域的云計算細分,它們分別對各自領(lǐng)域內(nèi)的資源進行抽象與整合,并在此基礎(chǔ)上提供更高級的服務(wù)。
然而,上述的云無法滿足計算機圖形發(fā)展的需求。一方面,圖形學的快速發(fā)展使得當前世界對于計算機圖形渲染能力的要求越來越高,而單機單圖形加速卡的能力不管如何快速進步,總是在一定程度上落后于需求,從而造成瓶頸。存儲云能夠整合計算機集群的存儲能力,滿足當前世界對存儲能力的巨大要求,因此自然可以聯(lián)想到解決上述瓶頸的辦法是將多機多圖形加速卡的渲染能力進行整合與抽象,并作為服務(wù)提供。由此,產(chǎn)生了渲染云的概念。另一方面,每種技術(shù)發(fā)展到一定階段都會出現(xiàn)細分的趨勢,渲染云作為云計算的特定細分,正是適應(yīng)了此種趨勢。此外,Michael Armbrust、Armando Fox等人也認為,將對計算能力敏感的應(yīng)用程序擴展到云是云計算發(fā)展過程中一個嶄新的機會,而3D渲染則是其中最典型的代表。因此,對于渲染云的研究具有很重要的現(xiàn)實意義。
雖然渲染云與衛(wèi)生云、政務(wù)云等都具有注重資源的整合與調(diào)度以及將抽象的資源作為一種服務(wù)提供給最終用戶的能力特點,但誼染云與它們存在較大不同。從技術(shù)上看,衛(wèi)生云、電子政務(wù)云等基礎(chǔ)首先是對于信息的獲得以及存儲,因此其最底層的實現(xiàn)依賴于集群的存儲以及檢索能力;而渲染云主要針對圖形渲染等需要大量浮點運算的場景,因此更加注重計算資源的整合與抽象,其基礎(chǔ)是如何對于集群圖形加速能力進行抽象與高效輸出。
本文將首先介紹與渲染云相關(guān)的工作,之后對幾種不同的虛擬機3D圖形加速技術(shù)進行分析與比較,討論將這些技術(shù)融入渲染云的可行性;接下來對虛擬化3D圖形加速集群技術(shù)進行研究;之后,在渲染集群基礎(chǔ)上,提出一個靈活、能夠支持不同設(shè)備協(xié)同工作的、基于虛擬化技術(shù)的渲染云框架;最后是總結(jié)和展望。
2、相關(guān)工作
云的實現(xiàn),需要結(jié)合多種技術(shù),虛擬化技術(shù)則是其中最重要的技術(shù)之一。對于渲染云而言,虛擬機的圖形加速功能極其重要。然而從虛擬化的角度來說,實現(xiàn)這一功能并不簡單:一方面,圖形處理器(graphic processor unit,GPU)是為圖形實時渲染量身定制的,特點是具有超長的流水線以及并行計算,因此對其進行軟件模擬十分復(fù)雜;另一方面,GPU的硬件接口受版權(quán)保護,許多技術(shù)細節(jié)被視為商業(yè)機密,因此開發(fā)者難以取得足夠的技術(shù)規(guī)格來說明虛擬化GPU;此外,GPU的結(jié)構(gòu)以及硬件接口經(jīng)常發(fā)生變化,且規(guī)格眾多,這也為對GPU進行虛擬化造成了困難。
雖然對GPU進行虛擬化有較大困難,但是虛擬機環(huán)境下的圖形加速功能并非無法實現(xiàn)。目前已有幾種不同的實現(xiàn)虛擬機3D圖形加速的方案。單獨的方案主要有VMGL;內(nèi)嵌于虛擬機的加速方案則主要有VMware Workstation、Xen和VirtualBox。
當前與渲染云直接有關(guān)的工作主要是Chromium OpenSG和VRJuggler等分布式的渲染項目以及Nvidia的渲染云計算平臺RealityServer。
Chromium、 OpenSG和VRJuggler等分布式的渲染項目,主要考慮的是如何把一個大的渲染任務(wù)分成小塊交給不同的設(shè)備完成;而云的概念強調(diào)如何將分布在各處的計算資源整合成一塊足夠大的計算資源。此外,這些項目也沒有考慮對于虛擬化技術(shù)的支持,因此與渲染云仍有不少差異。
Nvidia的渲染云計算平臺RealityServer主要利用Tesla RS硬件和RealityServer軟件來完成對渲染云的軟硬件支持。在硬件方面,該平臺必須使用Nvidia的RealityServer RS服務(wù)器集群,同時需要配合RealityServer軟件使用,因此RealityServer對于平臺的軟硬件都進行了限制。此外,該平臺不支持各種不同的圖形加速設(shè)備協(xié)同工作,對于希望利用渲染云方案整合現(xiàn)有渲染資源、提高資源使用率的企業(yè)而言,并非理想的解決方案。
針對上述兩方面工作各自的不足,本文以虛擬機3D圖形加速技術(shù)為基礎(chǔ),對其進行分析和比較,在此基礎(chǔ)上對支持虛擬化技術(shù)的、能夠支持多種圖形加速設(shè)備協(xié)同工作的渲染云框架進行研究。
3、虛擬機3D圖形加速技術(shù)分析及比較
3.1虛擬機3D圖形加速技術(shù)
虛擬機3D圖形加速技術(shù)目前主要有VMGL,VMware ,Xen以及VirtualBox等。
3.1.1 VMGL
VMGL(virutal machine library)是一個虛擬化環(huán)境中OpenGL渲染加速的解決方案,旨在為虛擬機環(huán)境提供硬件圖形加速功能。VMGL通過利用硬件進行渲染加速來解決虛擬機中3D應(yīng)用程序性能低下的問題。它基于Chromium和TightVNC兩個開源項目,并在其基礎(chǔ)上整合發(fā)展而來。
VMGL主要由Guest端與Host端兩部分組成。Guest端主要是在虛擬機中實現(xiàn)一個虛擬OpenGL庫,該虛擬庫用于替代虛擬機中的OpenGL庫,從而達到欺騙應(yīng)用程序、截獲OpenGL命令的目的;同時,該虛擬庫通過網(wǎng)絡(luò)將截獲的OpenGL命令打包發(fā)送給宿主機中的VMGL Host端。VMGL Host端接收到虛擬庫發(fā)送的命令之后調(diào)用宿主機中的OpenGL庫執(zhí)行,從而為虛擬機提供了硬件3D圖形渲染加速功能。
3.1.2 VMware
VMware對于虛擬機3D圖形加速的方案集成在VMware產(chǎn)品中,其典型代表是VMware Workstation。
VMware方面通過提供虛擬化的GPU設(shè)備來實現(xiàn)虛擬機硬件3D圖形渲染加速。即VMware為虛擬機提供了一個虛擬的GPU,同時為該GPU分別編寫了安裝在Host OS與Guest OS中的設(shè)備驅(qū)動。工作時,VMware通過Guest OS中的驅(qū)動程序得到應(yīng)用程序的命令,并且通過該驅(qū)動與Host OS中的驅(qū)動交互;Host OS中的驅(qū)動則可直接與硬件(即GPU)交互,從而實現(xiàn)了硬件渲染加速功能。
3.1.3 Xen
Xen的虛擬機3D硬件圖形加速功能也與Xen本身緊密結(jié)合。其主要設(shè)計思想是利用IOMMU技術(shù),使得Domain U中的應(yīng)用程序所發(fā)出的命令能夠直接到達顯卡執(zhí)行。渲染完成后,渲染結(jié)果通過ICA協(xié)議傳回原圖形應(yīng)用程序。
3.1.4 VirtualBox
VirtualBox對于虛擬機硬件圖形加速的支持較晚,性能對比VMware以及Xen也稍弱。其主要原理與VMGL相似,同樣基于Chromium項目,但是渲染完成后圖像回傳至原應(yīng)用程序時,基于TCP/IP傳輸。
3.2各技術(shù)的比較
本文主要著眼于基于虛擬機硬件3D圖形加速技術(shù)實現(xiàn)渲染云,因此對于上述技術(shù)的比較,主要考慮其是否方便改動、是否利于擴展以及利用這些技術(shù)實現(xiàn)渲染云的可行性。
VMware的3D圖形加速解決方案性能較好,但是由于其方案內(nèi)置于VMware的產(chǎn)品中,因此決定了利用VMware的方案組建渲染云時所有的宿主機上都必須安裝相同的VMware產(chǎn)品,這就限制了渲染云內(nèi)部配置的靈活性。此外,由于VMware方面依靠虛擬GPU來實現(xiàn)硬件渲染加速,因此每當GPU有較大幅度升級時,虛擬GPU都必須隨之升級才能保持性能優(yōu)勢。同時由于業(yè)界GPU產(chǎn)品一直處于快速升級的狀態(tài),因此該方案的工作量極其龐大。最后,由于VMware的產(chǎn)品皆為商業(yè)產(chǎn)品,因此對其進行改動、擴展都非常困難。
Xen與VirtualBox雖然都是開源項目,可以對其進行改動,但是兩者的解決方案均與其自身的虛擬機緊密結(jié)合,存在較大的禍合性,因此一方面改動難度較大,另外一方面擴展性也受到限制。
VMGL則與前面三者不同,是一個VMM-Independent(virtual machine monitor,虛擬機監(jiān)控程序)的項目。
由于VMGL是VMM-Independent的項目,因此VMGL并不依賴于特定的VMM(virtual machine monitor,虛擬機監(jiān)控程序),只要有Guest OS與Host OS、VMGL就可安裝。故使用VMGL的方案不會對渲染云使用的VMM類型造成限制,渲染云可以根據(jù)需要靈活決定配置。VMware ,Xen以及VirtualBox三者的圖形渲染加速方案與其產(chǎn)品本身結(jié)合在一起,無法獨立存在。因此,VMGL的配置靈活性優(yōu)于上述方案。
此外,由于VMGL的Guest端與Host之間的通信全部基于網(wǎng)絡(luò),因此Guest端與Host端均可獨立存在。由此擴展,VMGL的Guest端與Host端可以不安裝在同一臺物理機器上,甚至Guest端根本不安裝在虛擬機中,而是安裝在GPU性能較弱的物理機器上。此類對方案的使用可認為是對方案的擴展,VMGL可以無需修改便實現(xiàn),其余三者則均無法實現(xiàn)。因此,VMGL的可擴展性優(yōu)于其余3種方案。
最后,VMGL是一個開源項目.且項目中不包含與虛擬機硬件3D圖形渲染加速無關(guān)的部分,故對其進行改進與擴展較為方便。
綜合上述對于虛擬機硬件3D圖形加速方案的分析,本文認為在VMGL方案的基礎(chǔ)上進行改進與擴展、實現(xiàn)渲染云是最具有優(yōu)勢的做法。
4、虛擬化圖形加速集群技術(shù)
雖然利用VMGL技術(shù)實現(xiàn)渲染云具有較高的優(yōu)勢,但是由于VMGL的設(shè)計初衷并非實現(xiàn)渲染云,并且VMGL本身也不太完善,因此首先需要對VMGL進行改造,使其支持遠程渲染;之后在此基礎(chǔ)上,進行集群渲染技術(shù)的研究。
4.1支持遠程渲染的VMGL
4.1.1支持遠程渲染的VMGL框架
VMGL本身還處于開發(fā)初期,同時從渲染云的角度來看還存在渲染結(jié)果無法回傳、網(wǎng)絡(luò)傳輸效率不高等缺陷,因此首先需要對VMGL進行改造與完善。圖1所示為VMGL的框架結(jié)構(gòu)。
從圖1中可以看出,VMGL截獲的應(yīng)用程序最終的渲染結(jié)果只是在Host OS中一個名為Viewe:的VMGL組件中顯示,并沒有傳送回Guest OS中原本的圖形應(yīng)用程序。從渲染云的角度考慮,這是不符合使用習慣的、不自然的一種做法。因此,首先需要對此進行改進,使得圖像能夠傳送回原應(yīng)用程序。上述改進應(yīng)對應(yīng)用程序透明,即依然保持Guest OS中應(yīng)用程序不需要修改的特性。目前,該部分內(nèi)容已經(jīng)實現(xiàn),將在后文介紹。在修改完成后,VMGL框架中的Viewer則成為了冗余部分,從精簡代碼、提高程序執(zhí)行效率的角度看,該部分有必要去除。
此外,VMGL的網(wǎng)絡(luò)傳輸效率不高,因此該部分需要改造。VMGL的網(wǎng)絡(luò)傳輸部分基于TightVNC整合而來。VNC系統(tǒng)的設(shè)計以RFB (remote frame buffeting)協(xié)議為基礎(chǔ).該協(xié)議傳送的是簡單的像素數(shù)據(jù)信息,不經(jīng)過壓縮,因此數(shù)據(jù)量很大,網(wǎng)絡(luò)傳輸負擔較重?紤]到3D渲染加速很多情況下都是對3D動畫進行實時加速,同時渲染云需要并行地為多個請求提供服務(wù),因此采用RFB協(xié)議必然造成巨大的網(wǎng)絡(luò)負擔;谏鲜鲈颍枰獙MGL的網(wǎng)絡(luò)傳輸部分進行改進,在盡量減小圖像數(shù)據(jù)的同時,采用效率更好的傳輸協(xié)議,并對傳輸數(shù)據(jù)進行壓縮。
4.1.2支持遠程渲染的VMGL實現(xiàn)
對VMGL的改造目前已經(jīng)取得一定成果,主要表現(xiàn)為應(yīng)用程序圖像可以回傳至原窗口中,并且對回傳過程中的圖像進行了壓縮,以初步減少圖像數(shù)據(jù)的傳輸量。圖2所示為目前的改造成果。
如圖2所示,改造后,VMGL的渲染結(jié)果已經(jīng)可以傳回原窗口中。具體的原理如下:當宿主機中一幀畫面渲染結(jié)束或者接收到顯示圖像的命令時,VMGL Stub從OpenGL渲染管線的幀緩沖區(qū)中讀取該幀,并通過網(wǎng)絡(luò)傳送給VMGL Library,之后再由應(yīng)用程序取得結(jié)果并進行后續(xù)操作。
考慮到圖像傳輸過程數(shù)據(jù)流量很大,雖然RFB協(xié)議采用了差分傳輸?shù)拇胧,但是現(xiàn)有網(wǎng)絡(luò)傳輸能力仍然無法滿足完全負載的情況,因此在VMGL的Host與Guest兩端分別加人了圖像數(shù)據(jù)的壓縮以及還原部分,初步測試可以減少約2/3的數(shù)據(jù)傳輸量。此方法可以顯著降低對網(wǎng)絡(luò)負載能力的要求,但也在一定程度上提高了CPU的負載。
經(jīng)過測試,在100 Mbit/s局域網(wǎng)環(huán)境、Intel Core i5 M520 CPU ,4 GB內(nèi)存、NVIDIA GeForce 310 MB顯卡的條件下,800 dpix600 dpi分辨率的遠程渲染示例程序渲染結(jié)果壓縮和未壓縮的FPS以及網(wǎng)絡(luò)帶寬占用數(shù)據(jù)見表1。
4.2基于VMGL的渲染集群技術(shù)
現(xiàn)代云服務(wù)一般以集群為基礎(chǔ),并在此基礎(chǔ)上融人新的特性。因此VMGL首先需要具備在集群上工作的能力,即VMGL必須能夠整合多機、多顯卡GPU,使其協(xié)同工作。
圖3所示為利用VMGL組建渲染集群的結(jié)構(gòu)示意。集群含有一個主節(jié)點和若干普通節(jié)點,普通節(jié)點僅負責接收相關(guān)命令并利用硬件進行渲染;主節(jié)點則是具體整合多機渲染能力的節(jié)點。
主節(jié)點的VMGL Host端增加了任務(wù)分割以及數(shù)據(jù)傳輸與組合兩個功能模塊。當應(yīng)用程序有渲染要求時,首先由Guest OS中的VMGL Library和VMGL XExtension將渲染所需的OpenGL命令以及相關(guān)窗口命令發(fā)送到任務(wù)分割模塊,由該模塊根據(jù)普通節(jié)點的數(shù)量以及各自的渲染能力對任務(wù)進行分割;任務(wù)分割完成后,通過數(shù)據(jù)傳輸與組合模塊將任務(wù)發(fā)送給對應(yīng)的節(jié)點處理完成;所有節(jié)點的返回結(jié)果再由該模塊組合形成完整的渲染結(jié)果發(fā)送回Guest OS中的VMGL Library供應(yīng)用程序使用。
上述結(jié)構(gòu)僅在主節(jié)點中增加了任務(wù)分割以及數(shù)據(jù)傳輸與組合兩個模塊,其余VMGL原有的部分幾乎無需改動,但由此VMGL具備了在集群上工作的能力;同時任務(wù)分割模塊可以配置各種分割策略或者將其組合使用,具有較高的靈活性。此外,由于VMGL Stub可以通過Host中的OpenGL獲得直接利用GPU加速渲染的能力,集群對于GPU并無特定要求,因此,集群可以支持不同的GPU設(shè)備協(xié)同工作;最后,該結(jié)構(gòu)也能較好支持集群擴展。
5、基于虛擬化的渲染云框架研究
5.1演染云服務(wù)
不同于渲染集群技術(shù)主要著眼于如何整合利用集群的渲染能力,渲染云更強調(diào)如何將這些整合的渲染能力作為服務(wù)提供給用戶使用。
圖4顯示了渲染云服務(wù)的典型應(yīng)用場景。
渲染云將內(nèi)部的渲染能力整合作為服務(wù)提供給用戶使用,因此,諸如圖形工作室之類的用戶一方面可以僅在需要時請求渲染服務(wù),從而節(jié)省為員工每人配備圖形工作站的硬件成本;另一方面,由于渲染云整合了多機渲染資源,提供了遠高于單機的渲染能力,因此用戶等待誼染完成所需的時間相比傳統(tǒng)使用圖形工作站的方式大大降低,從而提高了用戶的工作效率。此外,在云端為集群安裝桌面虛擬化相關(guān)套件還可擴展渲染云,使其同時能夠提供桌面虛擬化的服務(wù)。
5.2墓于虛擬化的演染云框架
渲染云服務(wù)并不僅只是對于渲染集群的簡單運用,還需要從系統(tǒng)層面考慮各方面內(nèi)容。因此,本文在VMGL渲染集群的基礎(chǔ)上,對誼染云框架進行了研究。
圖5所示為基于虛擬化的誼染云框架。整個渲染云由一個主服務(wù)器及許多節(jié)點組成。主服務(wù)器負責對用戶請求進行響應(yīng)并對整個云進行管理,節(jié)點則負責完成具體的渲染工作。
主服務(wù)器主要分成用戶接口層、策略層以及內(nèi)部接口層。用戶接口層主要工作為對用戶請求進行處理并將最終結(jié)果反饋給用戶。策略層則主要有用戶管理、任務(wù)調(diào)度和負載均衡方面的工作。其中任務(wù)調(diào)度根據(jù)用戶請求進行粗粒度的調(diào)度,即當用戶請求被接受后,從節(jié)點中安排空閑的虛擬機運行用戶的任務(wù);負載均衡則根據(jù)每個節(jié)點反饋的負載情況對節(jié)點的任務(wù)進行調(diào)整。最后,內(nèi)部接口層主要完成數(shù)據(jù)和命令的發(fā)送以及接收工作。
云中的其余每個節(jié)點都具有基于VMGL的渲染集群中主節(jié)點的功能。即當有任務(wù)到達時,Host中的任務(wù)管理模塊可以將其分割并交給其余節(jié)點完成部分渲染工作;同時,每一個節(jié)點也接受其余節(jié)點發(fā)送的渲染任務(wù)并安排渲染。上述工作由任務(wù)管理模塊完成。此外,渲染云每個節(jié)點Host OS中的數(shù)據(jù)傳輸與組合模塊除完成渲染集群情況下的功能外,還負責將本節(jié)點的負載情況發(fā)送給主服務(wù)器。由于系統(tǒng)中其余部分對比渲染集群并無太大改動,渲染云也保留了基于VMGL的渲染集群支持不同設(shè)備協(xié)同工作、配置靈活以及擴展方便的特點。
6、結(jié)束語
渲染云能夠?qū)⒍鄼C的渲染能力整合與抽象.并將其統(tǒng)一、強大的渲染能力作為服務(wù)給外界,從而滿足當前世界日益增長的對于計算機渲染能力的要求。渲染云作為云計算在圖形渲染方面的特定細分,正是適應(yīng)了這種趨勢。本文從虛擬機3D圖形加速技術(shù)出發(fā),逐步深入對渲染云相關(guān)技術(shù)進行了研究,并提出了一個基于虛擬化的渲染云框架。目前,已經(jīng)完成對支持遠程渲染的VMGL改造和渲染集群框架,后續(xù)將在此基礎(chǔ)上對任務(wù)調(diào)度以及負載均衡等方面的內(nèi)容作詳細的比較與研究,并最終實現(xiàn)一個高效、配置靈活的渲染云。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:基于虛擬化硬件3D圖形加速的渲染云框架
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121510404.html