1. 程式人生 > >3D虛擬化技術透析及競爭分析

3D虛擬化技術透析及競爭分析

因為每篇blog字數限制,所以我們分四章節來介紹這個vGPU專題。這是第一篇。

一:3D虛擬化技術透析及競爭分析

sVGAvSGAvDGAvGPUGPUPass-through,天哪,太多的縮寫了,我要瘋掉了!

小夥伴們別急,讓我們一個一個來分析這些所寫的含義。

1名詞解釋

lsVGAVMware公司技術縮寫,意思是:軟體3D模擬渲染技術

lvSGAVMware公司技術縮寫,意思是:虛擬共享圖形加速技術

lvDGAVMware公司技術縮寫,意思是:虛擬專用圖形加速技術

lGPUPass-throughCitrix公司技術縮寫,意思是:GPU透傳技術

lSharedGPUCitrix

公司技術縮寫,意思是:GPU共享技術;

lvGPU業內統一術語,意思是:以類似於伺服器虛擬化上將CPU虛擬化的技術,將GPU卡虛擬化後,提供給虛擬機器使用。

目前,Citrix公司和NVIDIA公司合作,開發出了業界首個vGPU技術!

2.1sVGA的原理:VMware設計的虛擬的WDDM驅動程式(WindowsDisplayDriverModel1.1版本相容驅動。原理圖如下:

112329402.jpg

簡單地說,就是通過軟體模擬出軟體GPU卡的能力,實際上還是消耗CPU的負荷,只能;目前sVGA技術只能支援到DirectX9.0OpenGL2.1的渲染技術,利用伺服器記憶體模擬技術最大隻能虛擬512M視訊記憶體。

這種技術只適用於改善普通使用者桌面使用體驗。至於渲染技術只支援DirectX9.0OpenGL2.1有什麼問題,請參見2.5章節的解釋。

2.2vSGA的原理:多個虛擬機器均分安裝在物理伺服器上的顯示卡資源

原理圖如下:

112747994.jpg

事實上,vSGA的工作原理上是基於API的共享,即用於欺騙應用程式API的虛擬顯示卡驅動程式安裝於guestOS中並運行於核心模式。這個vGPUDriverAPI事實上功能分為前向介面和後向介面兩個功能,他們的功能分別是:

1)FrontEnd(前向介面)功能:

lGPU操作的API攔截,包括:

nparameterspassed傳遞過來的GPU呼叫引數

nordersemantics

傳遞過來的GPU呼叫語義

l包裝以上的函式呼叫,並將資料傳給後向介面

l終結虛擬模擬的顯示卡驅動的GPU呼叫,並提供向真實顯示卡的互操作和執行結果

2)BackEnd(後向介面)功能:

l負責將前向介面傳來的資料交給真實的GPUdriver進行處理

l解包前向介面傳來的函式呼叫

l對映記憶體指標

l執行真實的GPU操作

l返回執行結果

l將執行結果返回前向介面

下圖就是這個API的原理示意圖:

112749772.jpg

好吧,按照VMware的說法,這種技術是使用者共享GPU處理能力,貌似確實實現了類似vGPU的能力,但是事實如此嗎?

我們上面分析了vSGA的實際工作原理,瞭解到這種技術實際上是欺騙應用程式API的虛擬顯示卡驅動程式。那麼結果也就一目瞭然了,做過圖形設計的碼農們應該更清楚:

l“APIRemoting”看似很簡單,但它的處理是極其複雜,需要消耗大量的額外資源來做驅動的模擬模擬、API截獲、API傳遞、API佇列等待、API真實驅動處理、結果回傳等多種複雜的軟體計算過程

l虛擬顯示卡驅動的設計需要對所支援的所有GPUAPI進行模擬,但行業標準的API規範也在不斷改進和更新,這種設計需要不斷持續的支援.

l另外,還需要面對不同的API標準,如:OpenGL,DirectX,CUDA,OpenCL…

就目前該技術的實際應用來看,vSGAsVGA一樣,也只是支援DirectX9.0OpenGL2.1的渲染技術,已經夠舊了吧。此外,vSGA支援的最大虛擬視訊記憶體聽起來是是512M,事實上虛擬的GPU視訊記憶體,其中一半為GPU提供,一半為伺服器記憶體模擬,因此,最大隻能使用到256M的真實GPU視訊記憶體。

從使用者反饋來看,vSGA對改善部分情形圖形軟體體驗還是有所幫助的。

至於和Citrix的對比,請參見2.5章節。

2.3vDGA的原理:為每個虛擬機器分配獨立的安裝在物理伺服器上的物理顯示卡

這個技術和我們後文中介紹的來自CitrixGPUPass-Through技術是類似的,只是我弄不明白,V公司非要弄這麼多簡寫差不多的名詞嗎?

下圖就是vDGA的技術原理圖:

112820573.jpg

關於這種技術的原理,我們在CitrixGPUPass-Through部分也介紹過很多次了,此處不再詳述它的原理。從功能上兩者是高度相似的,畢竟V公司是抄襲Citrix的,想當年,CitrixGPUPass-Through都發布多久了,vDGA才姍姍來遲。

功能相似,但是易用性就不一定了,去問問VMwarevDGA能把顯示卡透傳給上面執行的什麼作業系統平臺上,如果回答者夠老實,他就只能回答你說,只能執行在Windows764-bit平臺。如果你的開發軟體只能跑在XP上怎麼辦?I’msorry.

夠清楚了吧。好了,V公司看到vDGA釋出時間遠晚於CitrixGPUPass-Through,功能也PK不過GPUPass-Through,他們只好說《VMware在效能上目前領先於競爭對手》(百度文庫上可以找到這個ppt,名字就叫做VMwareGPU虛擬化技術介紹)。對於他們這種做法,就好象一個巨人和一個矮子,明明在外形上矮子已經落敗,他偏偏嘴硬說:“他那麼大個有什麼用,我的力氣比他大”。

哈哈,誰更威武,不是已經一目瞭然了嘛。當然,你有難處,我表示理解。

2.4GPUPass-through的原理:為每個虛擬機器分配獨立的安裝在物理伺服器上的物理顯示卡

這部分的原理我就不再詳述了,基本上CitrixGPUPass-through技術和VMwarevDGA技術如出一轍,但是在具體的功能上,雙方還是有明顯差距,Citrix功能更全面,也是被業界證明真正具有生產環境下實施能力的解決方案。

下圖示就是兩者技術的功能性對比。

112838615.jpg

2.5SharedGPU的原理:將GPU卡透傳給Hypervisor之上的XenApp平臺

SharedGPU技術實際上是將CitrixGPUPass-ThroughCitrixXenApp技術完美結合的產物。

大家都知道CitrixXenApp的原理,我以一張簡圖為例再次解釋一下:

112854554.jpg

XenApp的優勢在於雖然只在一個作業系統上安裝過一次應用程式,但是這個應用程式卻可以被多個使用者同時使用,如果GPU資源也能被這麼分享,豈不是完美。這就是SharedGPU的原理。這就實現了多個使用者同時分享一個GPU卡的能力。

我們看看下面的原理圖:

112908788.jpg

在上面這張圖中,底層伺服器安裝了一塊GPU卡,在硬體平臺之上我們安裝了Hypervisor層,隨機我們在此之上安裝了三個XenApp虛擬機器(都是WindowsServer作業系統),每個虛擬機器上面都安裝了CitrixVDA客戶端軟體,此外還有供終端使用者使用的應用程式。隨後執行在Hypervisor平臺上的NVIDIA驅動程式直接將GPU資源釋出給虛擬機器使用。

請注意我上面使用的一個單詞是:“直接”。為什麼這麼說?請注意2.2章節的vSGA是如何做到的?vSGA要消耗大量的額外資源來做驅動的模擬模擬,說到底,真正能使用到多少百分比的GPU資源還是個未知數。

我們首先來看看VMwarevSGACitrixSharedGPU技術在功能上的對比:

112924425.jpg

是騾子是馬,拉出來溜溜就知道孰強孰弱了。我們還有必要就上面的DirectXOpenGL技術做一個解釋,在介紹2.1sVGA2.2vSGA技術時我們都提到了這兩種技術都是隻支援DirectX9.0OpenGL2.1的渲染技術,那麼這有什麼意義嗎?我們來看看DirectXOpenGL是幹什麼用的。

1)DirectX

lDirectXDirecteXtension的簡寫,可以進一步簡寫成DX。為微軟公司開發的多媒體程式設計介面,目前只支援Windows平臺。

lDirectX發展到現在已經有11代產品了,目前最常用的有兩個DirectX11.1Direct9.0c。前者是Windows7/8的標準配置,後者是WindowsXP的標準。對於很多新遊戲而言都以DirectX11為介面。

2)OpenGL

lOpenGL是由開源社群提供的免費開源的多媒體程式設計介面,全稱是OpenGraphicsLibraryOpenGL功能非常強大,但是使用起來也是相當的複雜,開源社群為任何作業系統提供OpenGL支援,所以適用範圍也是相當的廣。很多遊戲開發採用OpenGL作為渲染方式,這樣可以方便的向LinuxOSX等平臺移植。

l在非Windows平臺下,目前僅能使用OpenGL進行加速,而在Windows平臺下視訊功能可以由DirectX或者OpenGL完成。由於開發商的選擇不同,通常的硬體都是支持者兩種加速方式的。客觀的來說在超高階硬體上對OpenGL的支援更好。

好吧,看完DirectXOpenGL的解釋後你應該知道2.1sVGA2.2vSGA技術有多弱了吧。

VMware自吹vSGA技術可以支援多少種3D設計軟體,還有一個辦法戳破他們的謊言就是去Nvidia主頁上看看有多少種應用程式是在vSGA技術下得到認證的,我這裡有個圖可以分享一下:

112938190.jpg

OK,真相大白,我們繼續。

2.6vGPU技術出場:將GPU卡資源切片分給Hypervisor之上執行的VM

概念不做解釋了,理解什麼是vCPU就知道什麼是vGPU

正如第一節的名詞解釋所述,vGPU不是哪家公司的專有名字,而是業內通用術語。在去年NVIDIA公司宣佈與Citrix公司合作後,最早現身的時間點是今年5月份在CitrixSynergy2013大會上,CitrixCEOMarkB.Templeton演示了NVIDIAvGPU技術如何和CitrixXenDesktop產品結合,其流暢的渲染技術獲得了滿堂喝彩。此後NVIDIACEO黃仁勳也登臺介紹了NVIDIAGRID圖形虛擬化處理平臺以及vGPU技術。

在這次會議上,雙方宣佈思傑與NVIDIA將會在今年下半年推出業界首個為主機共享應用提供直接GPU共享的方案,並配合支援最新的OpenGL標準,此外還為開發提供遠端效能的新程式碼。

有興趣的朋友可以看看下面幾個視訊:

Citrix營銷副總裁-KrishnaSubramanian說明CitrixXenServer如何透過NVIDIAGRIDVGPU提供最棒的服務。

也可以從NVIDIA主頁上找到相關資訊:

回到正題,在本月1日,哈,也就是我們的國慶節,Citrix釋出了第一個技術預覽版的vGPU解決方案,也是目前全球第一個真正實現該技術的商業化產品。大家可以訪問下面的網址獲取第一手的資訊:

這次釋出的ReleaseNotes請參見下面的連結地址:

讓我們也來看看它的原理圖吧:

112951505.jpg

看到了嗎?這才是真正的vGPU技術,虛擬機器通過NVIDIADriver直接訪問切片後的GPU資源,而不是像vSGA技術那樣,通過欺騙應用程式API的虛擬顯示卡驅動程式來呼叫GPU,後者白白消耗掉大量的計算能力。

從圖中我們可以看出,vGPU技術是需要Hypervisor層面支援的,目前就只有XenServer支援。vSphere?好像還要等不少時間吧。

3競爭分析

那到底我用那個技術好呢?VMware也說好,Citrix也說好?怎麼辦?

2.4章節介紹CitrixGPU透傳技術和2.5章節介紹SharedGPU技術時我們都分別針對這兩項技術和VMware的對應方案作了onebyone的對比。有需要可以往上翻頁看看細則。現在我們來一個大餐,看一個放大的圖,把所有的技術中放在一起,看看各有什麼優缺點。

113008590.jpg

你如果看不清楚,可以訪問我的ShareFile雲盤空間直接下載這個jpg檔案:

從上面的具體分析可以看出以下幾點:

1.Citrix是真正的跨平臺技術,無論是那種3D解決方案,不但支援自己的XenServer,也支援VMwareHypervisor平臺;

2.就目前的技術來看,即使沒有剛釋出的vGPU技術,CitrixGPU共享領域的能力都要遠勝於VMware的技術;

3.Citrix3D虛擬化技術無論是在作業系統支援層面還是視訊記憶體支援,又或者是在對渲染技術的支援版本上,要遠優於VMware的解決方案;

4.在實施能力上,CitrixPVS技術能幫助使用者批量實施,而不用像VMware那樣只有預覽技術而沒有實施能力;

5.現在有了真正的vGPU技術,將會給設計行業的客戶帶來更多更好的選擇!