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