游釤栗,熊衛(wèi)華,應 繁
(浙江理工大學機械與自動控制學院,浙江 杭州 310018)
隨著虛擬化技術的不斷發(fā)展,現(xiàn)如今已經(jīng)可以將其運用到桌面端設備。它是一種以用戶為中心的計算模式,通過消除用戶桌面和特定硬件之間的綁定關系,使用戶從設備中解脫出來。在企業(yè)辦公、高校計算機實驗室等諸多領域得到廣泛應用。使用硬件虛擬化技術的物理主機可以獨立地為每個用戶提供服務,提高系統(tǒng)并發(fā)處理能力。再通過虛擬桌面?zhèn)鬏攨f(xié)議將物理主機上的資源“發(fā)送”到指定用戶的客戶機上,可達到與本地主機環(huán)境一樣的使用效果。
這樣的部署模式不僅操作簡單并且抗災能力強。當機房想為不同的功能需求添置不同的設備時,只需要在原物理服務器上進行性能拓展以安裝不同的鏡像,就可以達到新增服務的目的,避免了因購置新設備而產(chǎn)生的高昂費用問題。
與此同時,教育部指出網(wǎng)絡教育更應當注重信息傳遞和資源傳遞的優(yōu)勢,實現(xiàn)能夠在使用云上直播教學時,也可以充分地將優(yōu)質教學資源同現(xiàn)代化教育平臺相結合。針對上述要求,在智慧云桌面系統(tǒng)中加入了線上直播教學功能,學生可以實時獲取教師授課信息,教師進行課件演示、軟件實踐教學等。用戶使用終端設備時,通過輸入用戶名和密碼等信息接入到虛擬主機上的個人桌面,或者直接輸入房間號和密碼進入線上直播間。這樣的云上拓展方式,激發(fā)了學生的學習興趣,也有效地提高了數(shù)據(jù)安全性和資源利用率。
鑒于H.26x系列中的H.264視頻編解碼標準常常用于實時流媒體視頻直播系統(tǒng),所以在云桌面系統(tǒng)的線上直播模塊中采用H.264視頻編解碼標準對推流端的音視頻原始數(shù)據(jù)進行編碼,收流端再將數(shù)據(jù)解碼并通過設備進行播放。
本文通過優(yōu)化x264編碼器以改進FFmpeg框架的功能設置,以此減少直播中推送流和接收流的延遲。由于本文設計的直播需求為實時編碼,所以使用了Main Profile的壓縮檔次。然后研究了各種因素對系統(tǒng)性能的影響。進行優(yōu)化研究的測試序列和平臺環(huán)境如表1所示。
表1 測試環(huán)境Tab.1 The test environment
在量化過程中實際用于計算的參數(shù)是Qstep量化步長,其范圍為0-51。該數(shù)字越小,圖像質量越好。通常是在保證可接受視頻質量的前提下選擇一個最大的值,如果輸出視頻質量很好,那就嘗試一個更大的值,如果看起來很差,那就嘗試一個小點的值。為了找到一個更適用于直播實時編碼的Qstep值,本文利用命令行預先設置編碼器的量化步長,以下對Qstep設置不同的值,通過峰值信噪比(Peak Signal to Noise Ratio,PSNR)和碼率等指標來查看對系統(tǒng)性能的影響,測試結果見表2。
表2 Qstep測試結果Tab.2 Qstep test results
圖1中的六張圖像分別對應Qstep設置不同參數(shù)值時的編碼圖像。PSNR值和視頻編碼的碼率可以從一定程度上反映畫質的好壞,由表1統(tǒng)計出的數(shù)據(jù)可以得出,對于此視頻序列,隨著Qstep的增大PSNR值逐步減小,碼率相應降低,但編碼速度有相應提升。但是當取值在30以上時,視頻的碼率下降得很快,這表明畫面質量下降很明顯。在保證視頻質量的前提下,可以通過設置適當?shù)腝step值提升編碼速度,經(jīng)過多次測試分析,本項目將量化步長Qstep值設為27。
圖1 測試Qstep時編碼圖像Fig.1 Encode images when testing Qstep
H.264標準為幀間預測創(chuàng)建了兩個參考幀隊列,用來保存用于預測的解碼幀。當使用較少的參考幀時,所需的計算量也較少,但預測精度會降低,影響畫質和碼率。在x264編碼器中對于它的測試結果,如表3所示。
表3 參考幀數(shù)目測試結果Tab.3 Test results with reference to frame number
由表3中的數(shù)據(jù)可以看出,當參考幀的數(shù)目逐漸增加時,碼率會下降,但是當參考幀數(shù)目超過一定值時,碼率下降的效果就不明顯了,同時對PSNR的影響幾乎沒有。結合這一測試的結果,我們將本項目中的參考幀數(shù)目設為4。
運動估計是x264編碼器編碼過程的一個重要部分,x264編碼器可以控制多種搜索算法。
不同的搜索策略將對運動估計的計算規(guī)模產(chǎn)生影響,進而對視頻壓縮精度和處理速度產(chǎn)生影響。菱形搜索、正六邊形搜索、可變半徑六邊形搜索和全局搜索是x264中可以指定的四個參數(shù)值,可以在x264中進行配置。由表4的數(shù)據(jù)可以看出,對于此測試序列,使用全局搜索算法時運動估計的計算量最大,采用菱形搜索時編碼速度最快。因此在設計本項目時使用菱形搜索算法,以獲得較快的編碼速度和較高的幀率。
表4 搜索算法測試結果Tab.4 Test results of search algorithm
從前面的測試中可以看出,量化步長、參考幀的數(shù)目和運動搜索算法都對編碼性能有很大影響。PSNR在很大程度上受量化步長的影響。本測試的主要目標是在保持視頻質量的同時提高編碼速度和碼率。通過考慮各種因素對系統(tǒng)性能的影響,并根據(jù)本測試的標準適當?shù)卣{整參數(shù),可以提高視頻編碼性能。
本文將Proxmox公司開發(fā)的虛擬化平臺作為云桌面系統(tǒng)服務器的虛擬化框架。Proxmox VE是一個運行虛擬機和容器的平臺環(huán)境,它的內核基于Debian Linux系統(tǒng)。安裝Proxmox VE的物理主機就具備了硬件虛擬化的能力,它允許多客戶操作系統(tǒng)共享相同的硬件,Proxmox VE就像是在物理硬件上安裝的一套虛擬機管理程序,然后在此基礎上安裝各種虛擬機客體供用戶使用。該虛擬化平臺管理著主機的所有物理資源,如CPU、內存、網(wǎng)絡和存儲。
Proxmox直接安裝在服務器裸機上,安裝版本是PVE 5.11.22-8。系統(tǒng)的部署需在至少一臺物理服務器上安裝Proxmox系統(tǒng)。本文先采用一臺物理服務器安裝Proxmox,安裝完成后,管理員可以通過這個終端連接并管理集群上開辟的所有虛擬機和容器資源。Proxmox安裝完成后,當QEMU進程啟動時,就會調用獨立計算環(huán)境簡單協(xié)議(Simple Protocol for Independent Computing Environment,SPICE)中的Server動態(tài)鏈接庫,利用SPICE協(xié)議和SPICE Client進行連接。
在進行線上直播的過程中,通常是一個老師面對多個學生進行授課。在這種情況下,流媒體服務器應保持足夠的數(shù)據(jù)發(fā)送處理能力。由于Nginx在面對高并發(fā)性時能夠保持良好的數(shù)據(jù)轉發(fā)能力,且支持添加第三方實時消息傳輸協(xié)議(Real Time Messaging Protocol,RTMP)模塊、內存利用率低、功能豐富可擴展,因此本項目選擇將Nginx部署在由Proxmox創(chuàng)建的Ubuntu 16.04上,作為云桌面系統(tǒng)線上直播功能的流媒體服務器。
在設計線上直播教學模塊的過程中,還使用了流媒體推流鑒權技術。這樣可以有效防止流氓用戶向流媒體服務器推送危險信息或不良材料。Nginx的on publish命令主要負責推送流認證。在系統(tǒng)開始運行時,推送流向服務器請求并接收數(shù)據(jù)。服務器在收到推送流的請求后,將推送流攜帶的識別信息發(fā)送到on publish命令給定的地址。這個地址指向一個包含信息處理腳本的文件,該文件的主要目的是驗證用戶的個人信息。Nginx服務器將提供一個狀態(tài)碼作為驗證結果,其中2xx表示驗證成功,并使信息流能夠推送數(shù)據(jù)到服務器上。地址重定向,通常被稱為3xx,是將流端推送的信息發(fā)送到其他地址的過程。如果收到任何其他狀態(tài)代碼,流媒體端就會拒絕傳送流媒體數(shù)據(jù)。
在完成云桌面相關的設計和系統(tǒng)搭建后,針對智慧云桌面的桌面連接功能和線上直播功能設計了相關的測試和性能分析。在不斷測試的過程中,發(fā)現(xiàn)并解決在實現(xiàn)和應用上的不完善之處,系統(tǒng)內部的一些參數(shù)和變量在多次測試的基礎上不斷進行修改和完善。
本節(jié)主要對智慧云桌面的基本功能進行測試,檢驗系統(tǒng)能否正常連接,能否滿足使用的正常要求。測試使用的系統(tǒng)硬件配置如表5所示。
表5 設備配置Tab.5 Device configuration
鏡像類型為Windows 10專業(yè)版,對應的端口號為61009。打開客戶端,輸入對應的地址192.168.199.61:61010,輸入對應的用戶賬戶及密碼,即可成功登錄云桌面,如圖2所示。
圖2 Windows 10系統(tǒng)云桌面運行Fig.2 Windows 10 cloud desktop running
為了確保智慧云桌面系統(tǒng)可以在承擔一定業(yè)務壓力的條件下仍正常工作,對系統(tǒng)進行了穩(wěn)定性測試,在主服務器上開啟一定數(shù)量的云桌面資源用來模擬業(yè)務壓力,對系統(tǒng)穩(wěn)定性進行測試。測試方法為在Proxmox服務器上,同時開啟Windows 10、Windows 7、Ubuntu、CentOS云桌面,連續(xù)工作12 小時。
圖3為連續(xù)運行的系統(tǒng)輸入/輸出(Input/Output,I/O)延遲情況,這個指標的好壞影響著用戶利用客戶端和主服務器進行通信時的流暢程度。
圖3 系統(tǒng)I/O延遲Fig.3 System I/O delay
從圖3可以看出,智慧云桌面系統(tǒng)在用戶開啟云桌面資源的時候,系統(tǒng)I/O延遲能夠穩(wěn)定在1 秒以內,可以滿足用戶在云桌面資源上正常使用的需求。
對于智慧云桌面系統(tǒng)的線上直播模塊延遲測試,除表5列出的設備之外,外加一臺Windows系統(tǒng)設備,該設備是老師用來進行直播授課的設備,作為直播系統(tǒng)的推流端,學生自己使用的電腦作為收流端,用來模擬線上直播的情景。一般越小的視頻延遲,用戶的體驗程度也越好。為了檢測視頻播放時的延遲時間,對線上直播模塊進行了延遲測試,如圖4所示。
圖4 視頻播放延時Fig.4 Video playback delay
由圖4可以看出,選取60 秒的直播視頻進行測試,獲取從推流端到收流端的流數(shù)據(jù)延遲,最大延遲92 毫秒,視頻播放的延遲均在1 秒以內,可以滿足用戶在云桌面系統(tǒng)上正常使用直播功能的需求。
本文設計了一種基于服務器虛擬化技術和FFmpeg音視頻處理技術相結合的智慧云桌面系統(tǒng)。介紹了實現(xiàn)云桌面需要用到的虛擬化平臺Proxmox及相關的虛擬化技術,重點解釋了有關視頻編解碼的優(yōu)化。本系統(tǒng)在流媒體數(shù)據(jù)編解碼、線上直播、網(wǎng)絡延遲等方面取得了一些創(chuàng)新。測試結果證明,智慧云桌面系統(tǒng)在資源多元化分配方面較傳統(tǒng)桌面有了很大的性能提升,其線上直播教學模塊的播放延遲能夠控制在100毫秒以下,可以滿足用戶在使用直播功能時的需求,具有一定的應用前景。