云桌面的基本框架
Weidong Shi的2011年發(fā)表的文章:“SHARC: A scalable 3D graphics virtual appliance delivery framework in cloud”中
描述了“可擴(kuò)展3D桌面云”的SHARC框架肩榕,分為3個部分:
virtualization servers (虛擬化服務(wù)器轮纫,這篇文章使用Xen)
graphics rendering servers (圖形圖像渲染服務(wù)器,使用物理顯卡)
media streaming servers (視頻流服務(wù)器兄裂,采用H.264壓縮池凄,RTSP傳輸)
1.1 virtualization servers框架
圖形虛擬化
為了支持虛擬機(jī)的3D應(yīng)用,SHARC采用了虛擬OpenGL驅(qū)動(從Chromium的OpenGL驅(qū)動修改)鬼廓。
VMGL是一個Xen虛擬環(huán)境下的Linux虛擬OpenGL驅(qū)動肿仑,它也是從Chromium的OpenGL驅(qū)動修改而來的)。
SHARC提供了一個Linux GLX驅(qū)動碎税,它實(shí)現(xiàn)了很多Chromium和VMGL中沒有實(shí)現(xiàn)的函數(shù)尤慰。
SHARC為Windows實(shí)現(xiàn)了一個顯示驅(qū)動(Windows DDK),將圖形渲染命令和數(shù)據(jù)從虛擬機(jī)共享內(nèi)存中提取出來(一個dom0級的代理程序)雷蹂,將它發(fā)送到graphics rendering server中伟端。
實(shí)現(xiàn)了虛擬Direct3D驅(qū)動, 將Direct3D API轉(zhuǎn)換為OpenGL命令(從WineX's D3D Driver(WineD3D)修改)匪煌,采用這種方式支持Direct3D责蝠。
音頻虛擬化
聲卡模擬器(SB16)
交互虛擬化
使用Windows DDK實(shí)現(xiàn)了虛擬鍵盤和鼠標(biāo)輸入(針對Windows虛擬機(jī))
使用Linux udev實(shí)現(xiàn)了輸入守護(hù)服務(wù)(針對Linux虛擬機(jī))
1.2 graphics rendering server框架
執(zhí)行圖形渲染命令党巾,將渲染后的cJPEG數(shù)據(jù)流傳輸?shù)絤edia streaming servers中。
渲染上下文調(diào)度
SHARC’s graphics rendering server從Chromium’s server修改而來霜医。
SHARC 渲染圖像幀到 Pbuffer齿拂,(因?yàn)間raphics rendering server渲染圖像不是為了顯示,而是為了發(fā)送到media streaming server肴敛,這一點(diǎn)和Chromium署海、VMGL是不同的)。
選用cJPEG格式壓縮渲染后的幀医男,使用GPU's SIMD處理器砸狞,后來使用Nvidia's CUDA GPU編程。
對象的Cache
如果Cache中存在要渲染的圖行對象镀梭,virtualization servers不需要再傳輸一遍
GPU的JPEG壓縮
因?yàn)橐獋鬏斀omedia streaming servers刀森,所以使用JPEG壓縮一下,節(jié)省20%的帶寬丰辣。
1.3 media streaming server框架
采用SMP系統(tǒng)撒强,接收cJPEG流,轉(zhuǎn)碼成H.264的碼流笙什,之后傳輸出去飘哨。
使用FFMPEG(集成X264的H.264編碼器),H.264編碼只是用了I和P幀
使用Live555實(shí)現(xiàn)RTP/RTSP協(xié)議的支持琐凭,使用Red5實(shí)現(xiàn)RTMP協(xié)議支持
1.4 streaming VNC support
SHARC擴(kuò)展了標(biāo)準(zhǔn)VNC協(xié)議芽隆,以支持3D的虛擬應(yīng)用
使用overlay view的模式顯示實(shí)時的3D虛擬應(yīng)用
實(shí)驗(yàn)結(jié)果
2.1 實(shí)驗(yàn)條件
硬件:
virtualization server: 1個E5410 2.33 GHz,16 GB统屈,Xen 3.1
graphics rendering server: 4個PCIe x16插槽胚吁,4 塊Nvidia 9800GT顯卡
media streaming servers:2個E5410 2.33 GHz,4GB
客戶端:1個Dual-Core AMD Opteron Processor 2210愁憔, 2GB
網(wǎng)絡(luò)設(shè)備:Cisco 千兆交換機(jī)
測試實(shí)例:
Tux Racer (a GPL racing game)
Alien Arena (a FPS GPL game)
War of Warcraft 3 demo (a popular RPG game)
2.2 性能分析支持
使用IEEE Std 1588-2002進(jìn)行個機(jī)器之間的同步腕扶,以獲得小于毫秒級的精確計(jì)數(shù)器
實(shí)現(xiàn)了一個屏幕水印功能
2.3 初步結(jié)果(結(jié)果有些片面,不能反映系統(tǒng)的性能)
時延分析
總時延113ms左右
OpenGL的API調(diào)用次數(shù)和傳輸帶寬(virtualization server 到 graphics rendering server)
media streaming server的傳輸帶寬
使用Tux Racer例子(這只是最簡單的圖形)吨掌,800幀的平均帶寬在1.5Mbps