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.guhuozai8.cn/
本文標題:基于虛擬化硬件3D圖形加速的渲染云框架