淺談GPU虛擬化技術:GPU圖形渲染虛擬化

HitTwice發表於2018-06-11

  此節為第三章上節GPU SRIOV及VDI的一個補充,簡短介紹一下。

  新增上一節地址:http://cloud.it168.com/a2018/0520/3204/000003204070.shtml

  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唯一一個還不錯的開源免費軟體。

  更多的遠端桌面協議可以參考:https://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software

  使用者痛點的解決:圖形工作站:

  阿里雲圖形工作站

  由於上述問題的存在,很多虛擬化大廠都開始研發遠端連線協議。商用協議比如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容器化的計算服務。

  本文作者:鄭曉
  原文連結:https://yq.aliyun.com/articles/591405?spm=a2c4e.11155435.0.0.5ec936e6m3eGb5

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2155961/,如需轉載,請註明出處,否則將追究法律責任。

相關文章