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

由於每篇blog字數限制,因此咱們分四章節來介紹這個vGPU專題。這是第一篇。

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

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

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

1名詞解釋

lsVGAVMware公司技術縮寫,意思是:軟件3D模擬渲染技術服務器

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

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

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

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

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

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

2不一樣技術的適用場景分析

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

112329402.jpg

簡單地說,就是經過軟件模擬出軟件GPU卡的能力,實際上仍是消耗CPU的負荷,只能;目前sVGA技術只能支持到DirectX9.0OpenGL2.1的渲染技術,利用服務器內存模擬技術最大隻能虛擬512M顯存。3d

這種技術只適用於改善普通用戶桌面使用體驗。至於渲染技術只支持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標準,此外還爲開發提供遠程性能的新代碼。

有興趣的朋友能夠看看下面幾個視頻:

http://v.youku.com/v_show/id_XNjEyMTA2OTUy.html

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

也能夠從NVIDIA主頁上找到相關信息:

http://www.nvidia.cn/object/xendesktop-vgpu-cn.html

回到正題,在本月1日,哈,也就是咱們的國慶節,Citrix發佈了第一個技術預覽版的vGPU解決方案,也是目前全球第一個真正實現該技術的商業化產品。你們能夠訪問下面的網址獲取第一手的信息:

CitrixVirtualGPUSolutionTechPreview

此次發佈的ReleaseNotes請參見下面的連接地址:

vGPUTechPreviewReleaseNotes

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

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文件:

https://citrix.sharefile.com/d/s49dcfead9f74e168

從上面的具體分析能夠看出如下幾點:

1.Citrix是真正的跨平臺技術,不管是那種3D解決方案,不但支持本身的XenServer,也支持VMwareHypervisor平臺;

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

3.Citrix3D虛擬化技術不管是在操做系統支持層面仍是顯存支持,又或者是在對渲染技術的支持版本上,要遠優於VMware的解決方案;

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

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

相關文章
相關標籤/搜索