sVGA、vSGA、vDGA、vGPU、GPUPass-through,天哪,太多的縮寫了,我要瘋掉了!html
小夥伴們別急,讓咱們一個一個來分析這些所寫的含義。編程
lsVGA:VMware公司技術縮寫,意思是:軟件3D模擬渲染技術;服務器
lvSGA:VMware公司技術縮寫,意思是:虛擬共享圖形加速技術ide
lvDGA:VMware公司技術縮寫,意思是:虛擬專用圖形加速技術函數
lGPUPass-through:Citrix公司技術縮寫,意思是:GPU透傳技術性能
lSharedGPU:Citrix公司技術縮寫,意思是:GPU共享技術;spa
lvGPU:業內統一術語,意思是:以相似於服務器虛擬化上將CPU虛擬化的技術,將GPU卡虛擬化後,提供給虛擬機使用。操作系統
目前,Citrix公司和NVIDIA公司合做,開發出了業界首個vGPU技術!設計
簡單地說,就是經過軟件模擬出軟件GPU卡的能力,實際上仍是消耗CPU的負荷,只能;目前sVGA技術只能支持到DirectX9.0和OpenGL2.1的渲染技術,利用服務器內存模擬技術最大隻能虛擬512M顯存。3d
這種技術只適用於改善普通用戶桌面使用體驗。至於渲染技術只支持DirectX9.0和OpenGL2.1有什麼問題,請參見2.5章節的解釋。
原理圖以下:
事實上,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的原理示意圖:
好吧,按照VMware的說法,這種技術是用戶共享GPU處理能力,貌似確實實現了相似vGPU的能力,可是事實如此嗎?
咱們上面分析了vSGA的實際工做原理,瞭解到這種技術其實是欺騙應用程序API的虛擬顯卡驅動程序。那麼結果也就一目瞭然了,作過圖形設計的碼農們應該更清楚:
l「APIRemoting」看似很簡單,但它的處理是極其複雜,須要消耗大量的額外資源來作驅動的模擬仿真、API截獲、API傳遞、API隊列等待、API真實驅動處理、結果回傳等多種複雜的軟件計算過程
l虛擬顯卡驅動的設計須要對所支持的全部GPU的API進行仿真,但行業標準的API規範也在不斷改進和更新,這種設計須要不斷持續的支持.
l另外,還須要面對不一樣的API標準,如:OpenGL,DirectX,CUDA,OpenCL…
就目前該技術的實際應用來看,vSGA和sVGA同樣,也只是支持DirectX9.0和OpenGL2.1的渲染技術,已經夠舊了吧。此外,vSGA支持的最大虛擬顯存聽起來是是512M,事實上虛擬的GPU顯存,其中一半爲GPU提供,一半爲服務器內存模擬,所以,最大隻能使用到256M的真實GPU顯存。
從用戶反饋來看,vSGA對改善部分情形圖形軟件體驗仍是有所幫助的。
至於和Citrix的對比,請參見2.5章節。
這個技術和咱們後文中介紹的來自Citrix的GPUPass-Through技術是相似的,只是我弄不明白,V公司非要弄這麼多簡寫差很少的名詞嗎?
下圖就是vDGA的技術原理圖:
關於這種技術的原理,咱們在Citrix的GPUPass-Through部分也介紹過不少次了,此處再也不詳述它的原理。從功能上二者是高度類似的,畢竟V公司是抄襲Citrix的,想當年,Citrix的GPUPass-Through都發布多久了,vDGA才姍姍來遲。
功能類似,可是易用性就不必定了,去問問VMware,vDGA能把顯卡透傳給上面運行的什麼操做系統平臺上,若是回答者夠老實,他就只能回答你說,只能運行在Windows764-bit平臺。若是你的開發軟件只能跑在XP上怎麼辦?I’msorry.
夠清楚了吧。好了,V公司看到vDGA發佈時間遠晚於CitrixGPUPass-Through,功能也PK不過GPUPass-Through,他們只好說《VMware在性能上目前領先於競爭對手》(百度文庫上能夠找到這個ppt,名字就叫作VMwareGPU虛擬化技術介紹)。對於他們這種作法,就好象一個巨人和一個矮子,明明在外形上矮子已經落敗,他恰恰嘴硬說:「他那麼大個有什麼用,個人力氣比他大」。
哈哈,誰更威武,不是已經一目瞭然了嘛。固然,你有難處,我表示理解。
這部分的原理我就再也不詳述了,基本上Citrix的GPUPass-through技術和VMware的vDGA技術一模一樣,可是在具體的功能上,雙方仍是有明顯差距,Citrix功能更全面,也是被業界證實真正具備生產環境下實施能力的解決方案。
下圖標就是二者技術的功能性對比。
SharedGPU技術其實是將CitrixGPUPass-Through和CitrixXenApp技術完美結合的產物。
你們都知道CitrixXenApp的原理,我以一張簡圖爲例再次解釋一下:
XenApp的優點在於雖然只在一個操做系統上安裝過一次應用程序,可是這個應用程序卻能夠被多個用戶同時使用,若是GPU資源也能被這麼分享,豈不是完美。這就是SharedGPU的原理。這就實現了多個用戶同時分享一個GPU卡的能力。
咱們看看下面的原理圖:
在上面這張圖中,底層服務器安裝了一塊GPU卡,在硬件平臺之上咱們安裝了Hypervisor層,隨機咱們在此之上安裝了三個XenApp虛擬機(都是WindowsServer操做系統),每一個虛擬機上面都安裝了CitrixVDA客戶端軟件,此外還有供最終用戶使用的應用程序。隨後運行在Hypervisor平臺上的NVIDIA驅動程序直接將GPU資源發佈給虛擬機使用。
請注意我上面使用的一個單詞是:「直接」。爲何這麼說?請注意2.2章節的vSGA是如何作到的?vSGA要消耗大量的額外資源來作驅動的模擬仿真,說到底,真正能使用到多少百分比的GPU資源仍是個未知數。
咱們首先來看看VMwarevSGA和CitrixSharedGPU技術在功能上的對比:
是騾子是馬,拉出來溜溜就知道孰強孰弱了。咱們還有必要就上面的DirectX和OpenGL技術作一個解釋,在介紹2.1的sVGA和2.2的vSGA技術時咱們都提到了這兩種技術都是隻支持DirectX9.0和OpenGL2.1的渲染技術,那麼這有什麼意義嗎?咱們來看看DirectX和OpenGL是幹什麼用的。
1)DirectX
lDirectX是DirecteXtension的簡寫,能夠進一步簡寫成DX。爲微軟公司開發的多媒體編程接口,目前只支持Windows平臺。
lDirectX發展到如今已經有11代產品了,目前最經常使用的有兩個DirectX11.1和Direct9.0c。前者是Windows7/8的標準配置,後者是WindowsXP的標準。對於不少新遊戲而言都以DirectX11爲接口。
2)OpenGL
lOpenGL是由開源社區提供的免費開源的多媒體編程接口,全稱是OpenGraphicsLibrary。OpenGL功能很是強大,可是使用起來也是至關的複雜,開源社區爲任何操做系統提供OpenGL支持,因此適用範圍也是至關的廣。不少遊戲開發採用OpenGL做爲渲染方式,這樣能夠方便的向Linux和OSX等平臺移植。
l在非Windows平臺下,目前僅能使用OpenGL進行加速,而在Windows平臺下視頻功能能夠由DirectX或者OpenGL完成。因爲開發商的選擇不一樣,一般的硬件都是支持者兩種加速方式的。客觀的來講在超高端硬件上對OpenGL的支持更好。
好吧,看完DirectX和OpenGL的解釋後你應該知道2.1的sVGA和2.2的vSGA技術有多弱了吧。
VMware自吹vSGA技術能夠支持多少種3D設計軟件,還有一個辦法戳破他們的謊話就是去Nvidia主頁上看看有多少種應用程序是在vSGA技術下獲得認證的,我這裏有個圖能夠分享一下:
OK,真相大白,咱們繼續。
概念不作解釋了,理解什麼是vCPU就知道什麼是vGPU。
正如第一節的名詞解釋所述,vGPU不是哪家公司的專有名字,而是業內通用術語。在去年NVIDIA公司宣佈與Citrix公司合做後,最先現身的時間點是今年5月份在CitrixSynergy2013大會上,CitrixCEOMarkB.Templeton演示了NVIDIA的vGPU技術如何和CitrixXenDesktop產品結合,其流暢的渲染技術得到了滿堂喝彩。此後NVIDIACEO黃仁勳也登臺介紹了NVIDIA的GRID圖形虛擬化處理平臺以及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請參見下面的連接地址:
讓咱們也來看看它的原理圖吧:
看到了嗎?這纔是真正的vGPU技術,虛擬機經過NVIDIADriver直接訪問切片後的GPU資源,而不是像vSGA技術那樣,經過欺騙應用程序API的虛擬顯卡驅動程序來調用GPU,後者白白消耗掉大量的計算能力。
從圖中咱們能夠看出,vGPU技術是須要Hypervisor層面支持的,目前就只有XenServer支持。vSphere?好像還要等很多時間吧。
那到底我用那個技術好呢?VMware也說好,Citrix也說好?怎麼辦?
在2.4章節介紹CitrixGPU透傳技術和2.5章節介紹SharedGPU技術時咱們都分別針對這兩項技術和VMware的對應方案做了onebyone的對比。有須要能夠往上翻頁看看細則。如今咱們來一個大餐,看一個放大的圖,把全部的技術中放在一塊兒,看看各有什麼優缺點。
你若是看不清楚,能夠訪問個人ShareFile雲盤空間直接下載這個jpg文件:
https://citrix.sharefile.com/d/s49dcfead9f74e168
從上面的具體分析能夠看出如下幾點:
1.Citrix是真正的跨平臺技術,不管是那種3D解決方案,不但支持本身的XenServer,也支持VMware的Hypervisor平臺;
2.就目前的技術來看,即便沒有剛發佈的vGPU技術,Citrix在GPU共享領域的能力都要遠勝於VMware的技術;
3.Citrix的3D虛擬化技術不管是在操做系統支持層面仍是顯存支持,又或者是在對渲染技術的支持版本上,要遠優於VMware的解決方案;
4.在實施能力上,Citrix的PVS技術能幫助用戶批量實施,而不用像VMware那樣只有預覽技術而沒有實施能力;
5.如今有了真正的vGPU技術,將會給設計行業的客戶帶來更多更好的選擇!