余啟家 熊庭剛 張 宇
(武漢數字工程研究所 武漢 430074)
如今,隨著云計算需求和云上資源的日益增長,以設備為中心的傳統計算服務正慢慢轉變為以用戶為中心的服務[1]。以用戶中心的服務是沒有深入專業知識的用戶也可以隨時隨地使用基于云計算資源的服務。由于不受設備和地點的局限,云資源可以讓大量用戶共享資源同時分擔成本,這樣一來,云資源提供商可以將基礎設施集中在低成本(如房地產,電力等)地區,用戶可以以較低成本獲得更高的極限負載能力。云資源還具有極大的靈活性,可以根據用戶需求自由地重新配置、添加或擴展基礎設施資源。
基于桌面虛擬化的VDI(Virtual Desktop Infra?structure,虛擬桌面基礎架構)是云計算領域的領先服務,也是以桌面為中心的服務,托管通過網絡訪問的遠程服務器上的用戶桌面環境[2]。VDI是客戶端/服務器計算模型的變體,有時也稱為基于服務器的計算。眾所周知,VDI將虛擬桌面作為云環境中的服務提供給用戶,并使用戶能夠隨時隨地通過各種終端訪問其虛擬桌面[3]。VDI的通用組件是VDI客戶端,VDI服務器和VDI管理器,并且這些組件連接起來形成網絡服務[4]。
一般來說,為在VDI中使用虛擬桌面服務的客戶端提供豐富的用戶體驗非常重要。因此,許多提供像 Citrix[5],VMware[6],MS[7]這樣的 VDI解決方案的供應商都擁有自己的專有顯示協議。他們的協議一直在變得越來越好,所以每年都有很大的用戶體驗飛躍。近年來,顯示協議處理的不僅僅是顯示,所以用戶可以將音頻和視頻發送到遠程主機中的自己的虛擬桌面,并且幾乎可以使用任何基于USB的外圍設備[8]。
在傳統虛擬桌面應用的場合中,往往更注重經濟節能和對虛擬桌面的高效的管理,這種情況下往往會應用到瘦客戶機。然而,在一些特殊的場合中,信息安全卻被擺在首位,這正是由于虛擬桌面在安全和便利方面較傳統PC有著較大的優勢。在這種情況下,往往還需要有更高的服務質量(QoS)——加入GPU以改善虛擬桌面客戶機的顯示性能。
在本文中,我們在虛擬桌面客戶機中加入了VPU的支持,它為客戶機提供了更好的顯示畫面。此外,我們還對虛擬桌面顯示協議進行了針對性的改進,以提高虛擬桌面服務的質量。
桌面虛擬化將桌面計算機虛擬化,并將這些虛擬桌面環境提供給網絡上的用戶。桌面虛擬化基于服務器虛擬化,即將物理服務器劃分為更小的虛擬服務器,以幫助最大限度地提高服務器資源利用率,包括服務器中各個物理服務器,處理器和操作系統[9]。
VDI是桌面虛擬化的流行方法。VDI托管在集中或遠程服務器上運行的虛擬機(VM)中作為桌面環境的虛擬桌面。而且,用戶可以通過各種終端訪問分配給用戶的虛擬桌面。一般來說,VDI有三個組件:一個是用戶連接和用戶終端的VDI客戶端,一個存在用戶虛擬桌面的VDI服務器和一個管理虛擬桌面系統的VDI管理器。VDI服務器中的虛擬桌面通過網絡上的顯示協議傳輸到用戶終端。這些組件連接起來形成網絡上的虛擬桌面服務。
像Citrix,VMware,MS這樣的VDI提供商擁有自己的專有顯示協議。例如,Citrix的XenDesktop采用了HDX(高清體驗)顯示協議,通過支持WAN(廣域網)上的VoIP,網絡攝像頭和基于3D的應用等高質量音頻和視頻來改善用戶體驗[10]。VM?ware View通過采用Teradici的PCoIP(PC-over-IP)協議,其性能大大提高。此外,MS通過RemoteFX協議向用戶遠程交付虛擬桌面或遠程應用程序,該協議是MS的RDP(遠程桌面協議)[11]的一組協議。

圖1 VDI系統結構
由于這些商用VDI提供商都用的是閉源協議,在使用及研究中有著諸多技術上的限制和交流上的不便,也無法自由地定制一些客制化的功能或優化其性能,最關鍵的是存在未知的潛在安全隱患,我們最終選擇了開源的SPICE(Simple Protocol for Independent Computing Environment,獨立計算環境簡單協議)協議。它具有開源和可客制化改進的優點,另外在信息安全越來越重要的今天,它也滿足了我們對于自主可控的要求。圖1顯示了基于SPICE協議的VDI系統結構。
在本文中,我們設計并實現了基于VPU的虛擬桌面客戶機系統,為客戶機提供硬件解碼以獲得更好的顯示畫質。并且針對性地對VPU的驅動進行了優化,并分析了系統性能和實驗結果。
由于沒有VPU加速時客戶機解碼能力限制,只能在較低分辨率下有較好的幀數表現。為了減少帶寬消耗,我們又使用MJPEG壓縮算法將視頻流數據進行了壓縮,這會增加客戶機端的圖像渲染任務,這對客戶機的運算速度有了更高的要求。于是,我們給客戶機搭載了高解碼性能的VPU來接管圖像渲染任務,提高了客戶機的服務質量。
虛擬桌面客戶機的硬件總體設計采用異構多核處理構架,組成主要包括控制單元和圖形處理單元(Graphic Processing Unit,GPU)。其中圖形處理單元又包括視頻處理單元(Video Processing Unit,VPU)、外視頻模塊和后處理模塊這三個主要模塊。對外接口主要包括網絡接口、顯示輸出接口和控制輸入接口。虛擬桌面客戶機組成原理框圖如圖2所示。

圖2 虛擬桌面客戶機組成框圖
控制單元以低功耗嵌入式CPU為處理核心,完成設備系統管理及配置、任務分配、狀態監控、后臺服務器控制命令接收與處理、雙冗余千兆網絡協議解析、虛擬桌面傳輸協議解析和鍵盤鼠標輸入處理等功能。
圖形處理單元包括視頻處理單元、外視頻模塊和后處理模塊,其中后處理模塊由色彩轉換模塊(CSC),2D模塊,硬件圖層模塊組成。視頻處理單元完成視頻流數據的接收和解碼處理,然后將YUV格式的視頻數據放入顯存,由后處理模塊完成接下來的色彩轉換、2D處理和硬件圖層渲染。
網絡接口提供了服務器和客戶機之間的信息交互通道,顯示輸出接口(如DVI接口、VGA接口和HDMI接口等)將解碼后的視頻數據輸出給顯示器,控制輸入接口一般是USB接口,接收鍵盤和鼠標等設備的輸入。
由于客戶機有了VPU的加速,從服務端發送過來的視頻流數據經過硬件解碼,顯示效果有了很大的改善。VPU的加速過程同時也受到虛擬化協議中控制通道的控制,為了得到更好的顯示質量,在本設計中還對VPU驅動進行了針對性的優化。
通常,虛擬桌面顯示協議是用于接收諸如顯示器,鍵盤和鼠標之類的遠程計算設備的輸入和控制以及通過網絡傳輸輸出的一組消息。該協議有多個通道,根據類型和角色進行分類[12]。
本設計中,SPICE協議根據桌面傳輸內容來進行數據傳輸,如圖像、視頻、音頻播放和用戶輸入等數據,通過不同的抽象的“通道”對這些數據進行傳輸,使得SPICE協議能夠根據網絡的條件很容易地對傳輸的數據進行控制,提供QoS(服務質量)控制。
SPICE協議通過VDI(虛擬設備接口)直接與服務端虛擬設備進行交互,這使得SPICE可以直接、高效地使用服務器的硬件資源,同時也使得SPICE的實現獨立于虛擬機Guest OS(客戶操作系統)。圖3為SPICE協議結構框圖。

圖3 SPICE協議框圖
由于虛擬桌面上的視頻播放消耗的網絡帶寬比任何其他操作都要高,減少虛擬桌面中顯示通道的數據量是減小網絡帶寬消耗最有效的方法。
而有VPU加速支持的客戶機解碼能力有所提高,為了減小顯示通道數據的大小,我們將視頻數據進行了壓縮。在眾多視頻壓縮算法中,我們選擇了MJPEG算法,它有著幀內壓縮和壓縮速度快的特點,可以顯著縮短服務端和客戶端的交互時間,很好的滿足了虛擬桌面服務的需求。
另外,為了根據用戶接入的網絡和計算環境提供適應性虛擬桌面服務,需要監視服務器與用戶終端之間的網絡性能以及終端的計算能力。為了監視這些,服務器和客戶端使用虛擬桌面代理來交換關于計算環境和資源的信息。代理的任務是負責傳輸終端資源的相關信息和虛擬桌面顯示的具體配置。

圖4 虛擬桌面系統與虛擬化協議的整合
如圖4所示,我們改變了虛擬化顯示協議的虛擬桌面系統架構,并增加了三個控制模塊來改進該系統。這三個模塊如下:一個是客戶端查看器中的網絡狀態檢測,用于監視網絡帶寬并將其傳輸到控制通道,另一個是客戶端中的編碼設置,用于設置視頻流的參數。另一種是在服務器中進行控制編碼,即選擇視頻編碼算法和基于網絡帶寬的視頻壓縮比。
實驗是側重于客戶機的圍繞顯示性能的測試,客戶機使用的是由中船709研究所微電子中心所研制的第一代顯卡,表1給出了用于顯示性能分析的測試服務器和客戶機的硬件參數。

表1 測試中服務器與客戶機的硬件參數
由于桌面屏幕信號的數據大小大于任何其他接口信號,因此顯示通道使用的網絡帶寬要比為用戶提供虛擬桌面所需的其他通道多,同時客戶機主要的運算量也在于視頻解碼。
為了提高顯示質量,通過VPU將軟解碼轉化為硬解碼,以加快解碼速度。另外,由于解碼性能的提高,可以將傳輸的數據進行壓縮,將更多的渲染任務在客戶端完成,于是網絡帶寬和服務端負載得以降低。為了使研究更有針對性,接下來我們對硬解碼加速前后的虛擬桌面構架進行了對比測試。
在這個實驗中,虛擬桌面服務器與客戶端之間的最大網絡帶寬約為923Mbps,我們根據虛擬桌面窗口分辨率,視頻播放器分辨率和視頻資源分辨率的變化對客戶端顯示幀數和消耗的網絡帶寬進行了分析。
表2顯示了將虛擬桌面提供給遠程客戶端時的幀數和網絡帶寬測量結果。視頻在虛擬桌面中播放,其大小為6Mbytes,分辨率為320×180。播放器分辨率為320×180。

表2 虛擬桌面分辨率對于幀數和網絡帶寬的影響
從表中可以看出,虛擬桌面操作系統的分辨率大小完全不會影響客戶端幀數和網絡帶寬。
表3顯示了虛擬桌面上視頻播放器分辨率變化帶來的顯示質量和網絡帶寬變化的實驗結果。實驗中虛擬桌面分辨率是1920×1080,視頻資源的分辨率為640×360。

表3 播放器分辨率對于幀數和網絡帶寬得到影響
從表3可以看出,虛擬桌面中視頻播放器分辨率的改變對網絡帶寬消耗有著直接的影響。加速后網絡帶寬的平均消耗比加速前約減少40%。當播放器分辨率小于視頻分辨率時,加速前后網絡帶寬都與窗口大小成正比;當視頻播放器的分辨率大于或等于視頻分辨率時,網絡帶寬不再增加。
加速前客戶端顯示幀數隨著播放器分辨率增大而減小;加速后播放器分辨率對客戶端顯示幀數幾乎沒有影響。
表4給出了虛擬桌面視頻資源的分辨率對于幀數和網絡帶寬影響的實驗結果。實驗中虛擬桌面分辨率是1920×1080,視頻播放器的分辨率為1920×1080。

表4 視頻分辨率對于幀數和網絡帶寬的影響
我們發現網絡帶寬消耗隨著視頻分辨率的提升而增多,并且加速后的網絡帶寬消耗約降低一半。而視頻分辨率對加速前的客戶端幀數有一定影響,加速后的客戶端幀數則穩定在22左右,由于客戶機有了VPU的支持,解碼性能還沒有達到瓶頸。
實際應用中,往往會出現顯示圖像抖動、撕裂的情況,其原因是多樣的。對于本系統來說往往是由于客戶機渲染速度不夠,客戶機CPU經常處于滿負荷計算狀態,導致部分幀的延遲或丟失。對于要求嚴苛的使用環境,虛擬桌面系統的幀數必須保持穩定,于是我們對客戶機進行了持續1分鐘的實時幀數測試。測試中虛擬桌面系統分辨率為1920×1080,視頻播放器分辨率為1920×1080,視頻分辨率是1280×720,結果如圖5。

圖5 實時性測試
從圖5顯示的結果可以看出,有VPU加速的情況下,客戶機的幀數非常穩定;沒有VPU加速的客戶機幀數抖動比較大,偶爾會出現極低的幀率。
根據本文的實驗,經過改進的虛擬桌面客戶機比改進之前的客戶機減少高達44%的網絡帶寬消耗,這是因為視頻流數據被用于減少網絡帶寬的壓縮算法壓縮了。這也意味著更多的渲染任務被轉移到了客戶機端,由于有了VPU的支持,客戶機的解碼能力得以增強,客戶端顯示幀數相比沒有VPU的客戶機提高了高達400%。
本文中,我們先改進了虛擬化協議,使用壓縮算法將視頻流數據進行壓縮,降低了單個客戶機的帶寬消耗,從而使每個服務器能給更多的客戶機提供虛擬桌面服務,同時也降低了客戶機對CPU的性能要求。然后使用高性能VPU提升客戶機的解碼能力,使客戶端的顯示畫面能夠穩定在較高的幀數,從而提供更好的服務質量。
試驗結果表明,與沒改進的協議相比帶寬減少了高達44%,客戶端顯示幀數提升了高達400%。
目前,我們正在研究如何合理的將虛擬桌面進行分割,使用更高效的算法,對每一幀畫面分塊壓縮和傳輸,并在客戶機端正確的“組裝”起來。這樣做帶來的好處是,可以有目的性的單獨控制每個塊的顯示質量,比如提高文本區的顯示質量、降低非關鍵區的刷新幀數或畫面細膩程度、使具有高刷新率的動態區域變得模糊等等,可以在提高服務質量的同時,進一步降低網絡帶寬需求。