淺談GPU虛擬化技術:GPU圖形渲染虛擬化
VDI的用戶體驗問題
無論是AMD的GPU SRIOV還是Nvidia的M60等直通設備虛擬化,亦或者是GVT-g這樣的分片虛擬化,在處理圖形渲染為主的虛擬化方案都會定位于VDI客戶。但都會面臨一個問題:圖形渲染的遠程顯示。而這些虛擬機以windows guest為主。如何解決遠程顯示的問題(既以前提到的remote display的問題),在很大程度上決定著用戶體驗和用戶粘性。
然而即便是現在云計算服務非常成熟的情況下,依然沒有一款通用的,適合大多數場景的解決方案。
那么VDI用戶體驗的問題主要體現在哪里呢?
支持GPU圖形渲染的虛擬機,通過KVM SPICE 你很有可能看到的是黑屏。
要發揮圖形渲染的能力,你將要在虛擬機內部安裝額外的軟件來支持遠程顯示的問題
在絕大多數傳統客戶都已經非常熟悉KVM SPICE VNC這個方式遠程連接客戶機的情況下,在支持圖形渲染的虛擬機,竟然無一例外的提供一個黑屏給客戶。這使得客戶在虛擬機啟動過程中一旦加載SeaBIOS結束后,將無法操作客戶機,因為你看不到屏幕顯示。
更讓人無語的是問題2的解決,你需要在客戶機內部安裝一些支持遠程連接的協議。由于問題1的存在,你將看不到屏幕。你沒辦法安裝軟件!!!是不是開始覺得頭疼了?
所以很多時候用戶(公用云服務廠商都會有解決方法去避免這種情況的發生),在自己搭建VDI環境的時候,是先把GPU虛擬化功能禁止。然后在虛擬機內部安裝自己想要的遠程連接工具,并配置成自啟動方式。然后才能開啟GPU虛擬化功能。
如此用戶體驗已經被詬病多年,而各方貌似也沒有要去解決它的意愿。所以只能使用第三方遠程顯示協議來彌補了。為什么沒有人去解決?因為就算解決了你也未必會為此付費。
選幾個用的比較多的方法和Display Remote Protocol遠程顯示的效果。
遠程桌面連接(RDP)
在不帶vGPU的虛擬機上,QEMU會自帶一個全模擬的VGA設備(cirrus or qxl),這些設備與KVM的SPICE配合默契,可以通過VNC查看虛擬機桌面。但是一旦安裝了vGPU的驅動,由于顯示被vGPU驅動接管,那么用戶往往在這個VNC看到的是黑屏。用戶體驗相當差。
這個時候用戶需要通過windows自帶的遠程桌面連接(RDP)來連接虛擬機。這在一定程度上解決了客戶需求。然而RDP并不能解決所有問題。RDP在對2D的支持上不錯,但在需要用到overlay的情況下windows RDP就沒有辦法顯示。另外在全屏模式下的3D顯示有會有問題。
當然優點是windows guest自帶。但你至少需要登陸一次虛擬機并打開遠程協助共享功能。
Tightvnc
為數不多的開源vnc軟件,可以遠程顯示2D,3D渲染結果,體驗也不錯。但是需要客戶在Window guest內部安裝一個tightvnc server。不能像RDP一樣原生支持。
X11vnc:
X11vnc是用于Linux客戶端的一個遠程桌面協議。支持3D,2D。目前為止是用于Linux***一個還不錯的開源免費軟件。
用戶痛點的解決:
圖形工作站:
阿里云圖形工作站
由于上述問題的存在,很多虛擬化大廠都開始研發遠程連接協議。商用協議比如Citrix的HDX,HP的RGS等等。這些協議被公有云產品包裝起來提供VDI完整顯示支持而不需要讓客戶去考慮如何遠程顯示的問題,提升了用戶體驗。
比如最近阿里云提供的云圖站的功能就是一個很好的例子。做了用戶所有不愿意接觸的技術細節,只提供用戶最關心的業務。請查看阿里云圖形工作站介紹。
阿里云圖形工作站采用的是Citrix HDX協議。通過CitrixReceiver遠程顯示,效果如下
XenApp and XenDesktop
在傳統VDI的基礎上,Citrix很早就開始了遠程協助的另類服務:XenApp與XenDesktop。XenApp/XenDesktop不再以虛擬機為服務對象,而是把遠程運行鏈接APP或者Desktop作為服務對象。
并把遠程APP在Citrix HDX協議的基礎上派發給客戶端。用戶按需使用XenAPP上面部署的App而無須關注背后的虛擬機及其服務器。XenApp等服務在混合云及私有云范圍內應用廣泛。IT服務部門在對大規模應用程序作集中部署和應用更新。交付的時候只需要在XenAPP服務器端注冊添加服務就可以。而同一個公司的成千上萬的客戶通過瘦客戶機或者web頁面來訪問該更新應用。
并且收費模式也以按需收費為主。
XenApp的App部署和交付并非簡單的VDI重定向,而是在系統層面做了極大的應用優化:比如memory,CPU,GPU渲染等等。作為一個商用產品Citrix各方面的宣傳中對技術細節語焉不詳。我們也無從得知更多的信息。
看一個例子:
AWS AppStream
AppStream是與XenApp/XenDesktop同類型的應用。如果XenApp是在私有云上面應用廣泛的化,那么AppStream其在AWS上面部署,提供的是公用云上的服務。
AppStream采用了AWS自己開發的STX協議,STX協議以低延時高壓縮比的H264作為基礎。其協議針對公用云網絡環境,在720p的顯示分辨率的情況下帶寬可以縮小到500kbps以下。
容器化的GPU圖形渲染
不好意思,目前沒有看到這樣的產品與技術。只有NGC這樣的GPU容器化的計算服務。