林立 熊金波 肖如良 林銘煒 陳秀華
摘 要:云游戲作為云計(jì)算的“殺手級”應(yīng)用正在引領(lǐng)游戲運(yùn)行方式的變革。然而,云端與終端設(shè)備之間較大的網(wǎng)絡(luò)延遲影響了云游戲的用戶體驗(yàn),因此,提出一種基于邊緣計(jì)算理念,部署在邊緣節(jié)點(diǎn)之上的低延遲的云游戲框架——Gaming@Edge。為了降低邊緣節(jié)點(diǎn)的計(jì)算負(fù)載以提升其并發(fā)能力,Gaming@Edge實(shí)現(xiàn)了一種基于壓縮圖形流的云游戲運(yùn)行機(jī)制——GSGOD。GSGOD分離了游戲運(yùn)行中的邏輯計(jì)算和畫面渲染,實(shí)現(xiàn)了一種邊+端的計(jì)算融合。此外,GSGOD還通過數(shù)據(jù)緩存、指令流水處理以及對象狀態(tài)延遲更新等機(jī)制優(yōu)化了云游戲的網(wǎng)絡(luò)數(shù)據(jù)傳輸和系統(tǒng)延遲。實(shí)驗(yàn)結(jié)果表明,Gaming@Edge相比傳統(tǒng)的云游戲系統(tǒng)能夠降低平均74%的網(wǎng)絡(luò)延遲,并提高4.3倍游戲?qū)嵗l(fā)能力。
關(guān)鍵詞:云游戲;云計(jì)算;邊緣計(jì)算;視頻流;圖形流
Abstract: As a “killer” application in cloud computing, cloud gaming is leading the revolution of way of gaming. However, the high latency between the cloud and end devices hurts user experience. Aiming at the problem, a low latency cloud gaming system deployed on edge nodes, called Gaming@Edge, was proposed based on edge computing concept. To reduce the overhead of edge nodes for improving the concurrency, a cloud gaming running mechanism based on compressed graphics streaming, named GSGOD (Graphics Stream based Game-on-Demand), was implemented in Gaming@Edge system. The logic computing and rendering in the game running were separated and a computing fusion of edge nodes and end devices was built by GSGOD. Moreover, the network data transmission and latency were optimized through the mechanisms such as data caching, instruction pipeline processing and lazy object updating in GSGOD. The experimental results show that Gaming@Edge can reduce average network latency by 74% and increase concurrency of game instances by 4.3 times compared to traditional cloud gaming system.
Key words: cloud gaming; cloud computing; edge computing; video streaming; graphics streaming
0 引言
隨著技術(shù)、架構(gòu)以及商業(yè)模式的快速發(fā)展和完善,云計(jì)算作為一種成熟的計(jì)算范型已經(jīng)得到廣泛應(yīng)用。云計(jì)算憑借強(qiáng)大的計(jì)算和存儲能力提供了分層服務(wù)體系,并最終以一切即服務(wù)(X as a Service, XaaS)的方式面向終端用戶提供便捷、多平臺、任意時(shí)間和地點(diǎn)訪問的服務(wù)。云游戲正是近年來出現(xiàn)的被認(rèn)為是“殺手級”的云計(jì)算應(yīng)用[1]。在云游戲中,當(dāng)用戶請求運(yùn)行一個(gè)游戲時(shí),數(shù)據(jù)中心啟動(dòng)該游戲?qū)嵗?,?zhí)行游戲邏輯,響應(yīng)用戶輸入,同時(shí)將游戲渲染畫面實(shí)時(shí)壓縮以視頻流方式傳輸至用戶端。用戶接收視頻流后可以在任何平臺播放游戲畫面,如PC、智能手機(jī)、平板電腦、互聯(lián)網(wǎng)電視等。云游戲的出現(xiàn)改變了以客戶端為中心的傳統(tǒng)游戲運(yùn)行模式,它實(shí)現(xiàn)了按需游戲的理念(Game on Demand),避免了用戶對游戲軟硬件的頻繁更新,使得用戶可以輕松地跨平臺同步游戲狀態(tài)和運(yùn)行記錄[2]。這種新型的云應(yīng)用目前已吸引了大量游戲玩家并出現(xiàn)了許多成功的商業(yè)案例,如PlayStationNow、LiquidSky、Paperspace等。
上述的云游戲運(yùn)行方式,以游戲畫面的視頻流為基礎(chǔ)進(jìn)行傳輸,本文稱之為“視頻流”云游戲。云游戲帶來游戲運(yùn)行方式的革新,但這種基于視頻流構(gòu)建的云游戲存在用戶體驗(yàn)的嚴(yán)重不足,即游戲延遲高和帶寬需求大。由于云數(shù)據(jù)中心遠(yuǎn)離用戶終端設(shè)備,兩者之間的網(wǎng)絡(luò)往返時(shí)間(Round Trip Time, RTT)較大,導(dǎo)致游戲延遲高;同時(shí),由于高清視頻編碼需要較高的碼率,因此云游戲?qū)τ谟脩魩捫枨筝^大,如當(dāng)前主流的云游戲要求用戶至少擁有3MB/s的帶寬[3]。此外,當(dāng)大規(guī)模用戶請求服務(wù)時(shí),數(shù)據(jù)中心整體的帶寬消耗巨大和游戲?qū)嵗l(fā)能力不足的問題突出。云數(shù)據(jù)中心基于虛擬化技術(shù)為云游戲提供服務(wù)[4],而游戲是一種計(jì)算和渲染任務(wù)都極其繁重的應(yīng)用,它不但要求CPU的邏輯計(jì)算能力,同時(shí)依賴GPU的渲染能力。當(dāng)前的虛擬化技術(shù)對于GPU支持不足[5-6],導(dǎo)致云游戲數(shù)據(jù)中心部署成本高昂,游戲并發(fā)能力較弱。據(jù)報(bào)道,曾經(jīng)著名的云游戲公司OnLive就因高昂的系統(tǒng)維護(hù)成本導(dǎo)致破產(chǎn)倒閉。
近年來,一種新的計(jì)算范型——邊緣計(jì)算[7-8]的出現(xiàn),成為解決云游戲高延遲問題極具前景的方式。邊緣計(jì)算將計(jì)算從網(wǎng)絡(luò)中心(如數(shù)據(jù)中心)推向網(wǎng)絡(luò)的邊緣(如眾多的終端設(shè)備)。邊緣計(jì)算利用邊緣節(jié)點(diǎn)(如Cloudlet[9])的網(wǎng)絡(luò)鄰近性解決了云游戲中的延遲問題,同時(shí)這種分布式處理克服了云數(shù)據(jù)中心集中計(jì)算的高帶寬消耗。基于這種分析,本文設(shè)計(jì)和實(shí)現(xiàn)了Gaming@Edge,一種基于邊緣節(jié)點(diǎn)的云游戲運(yùn)行框架。在Gaming@Edge中,云負(fù)責(zé)用戶注冊、服務(wù)注冊、服務(wù)發(fā)現(xiàn)以及協(xié)調(diào)各節(jié)點(diǎn)的資源調(diào)度;邊緣節(jié)點(diǎn)則作為分布式的計(jì)算節(jié)點(diǎn)。由于邊緣節(jié)點(diǎn)計(jì)算能力相對有限,框架首先要解決傳統(tǒng)視頻流云游戲中服務(wù)器端負(fù)載高、游戲?qū)嵗l(fā)性低的問題,因此,本文在Gaming@Edge中實(shí)現(xiàn)了一種基于圖形指令流的云游戲機(jī)制——GSGOD(Graphics Stream based Game-on-Demand)。GSGOD云游戲運(yùn)行機(jī)制繼承了云游戲的便利性,游戲運(yùn)行和維護(hù)仍然在服務(wù)器端。不同的是在GSGOD中服務(wù)器攔截游戲的圖形渲染指令,以圖形流的方式傳輸至客戶端??蛻舳藙t完成圖形指令的執(zhí)行,即游戲畫面的渲染。GSGOD分離了游戲邏輯計(jì)算和畫面渲染任務(wù),既利用邊緣節(jié)點(diǎn)較強(qiáng)的計(jì)算能力,又發(fā)揮了客戶端的渲染能力,以高效和合理的方式進(jìn)行端和邊緣節(jié)點(diǎn)之間的任務(wù)分配。這種方式大幅度降低了系統(tǒng)延遲,提升了用戶體驗(yàn),同時(shí)成倍地提高了服務(wù)器游戲并發(fā)性能。此外,為了減少圖形流的數(shù)據(jù)傳輸量,GSGOD基于圖形渲染指令的統(tǒng)計(jì)分析,實(shí)現(xiàn)了圖形流的壓縮;同時(shí)優(yōu)化了圖形指令的流水執(zhí)行和對象狀態(tài)同步機(jī)制,進(jìn)一步降低了系統(tǒng)延遲。
本文的主要貢獻(xiàn)有三點(diǎn):1)實(shí)現(xiàn)了基于邊緣節(jié)點(diǎn)構(gòu)建的云游戲框架Gaming@Edge;2)實(shí)現(xiàn)了基于壓縮圖形流的云游戲機(jī)制GSGOD;3)系統(tǒng)性對比了圖形流和視頻流這兩種云游戲運(yùn)行機(jī)制的性能。本文所提出的Gaming@Edge驗(yàn)證了基于邊緣計(jì)算構(gòu)建云游戲系統(tǒng)的可行性,為后續(xù)相關(guān)工作提供了經(jīng)驗(yàn)。
1 相關(guān)工作
1.1 云游戲系統(tǒng)的技術(shù)和架構(gòu)
當(dāng)前云游戲系統(tǒng)的實(shí)現(xiàn)方式可以分為兩類:視頻流(Video Streaming)方式和圖形流(Graphics Streaming)方式[10]。GamingAnywhere(GA)[11]是首個(gè)開源視頻流云游戲系統(tǒng),它完整實(shí)現(xiàn)了視頻流云游戲的各部分組件:客戶端的用戶輸入處理,事件捕捉以及媒體播放;服務(wù)器端的音頻視頻捕捉,基于H.264/MPEG-4 AVC的視頻壓縮以及實(shí)時(shí)流傳輸協(xié)議。GamingAnywhere具備良好的可擴(kuò)展、可移植和可配置等特性,引起學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。本文采用GamingAnywhere作為視頻流云游戲系統(tǒng)解決方案,與GSGOD系統(tǒng)進(jìn)行比較分析。Shi等[12]在視頻流方式基礎(chǔ)上提出一種基于3D圖像變形輔助的實(shí)時(shí)視頻編碼方法,該方法使用圖形渲染語義提升云游戲的視頻編碼性能,從而減少了視頻數(shù)據(jù)的傳輸量和系統(tǒng)延遲。此外,Lee等[13]以及Lin等[14]分別在降低云游戲系統(tǒng)的延遲和提高云游戲服務(wù)質(zhì)量上進(jìn)行了相關(guān)研究。
Games@Large項(xiàng)目[15-17]設(shè)計(jì)了一個(gè)通用的云游戲框架,在該框架中用戶可以從任何接入設(shè)備訪問游戲中心并運(yùn)行游戲。Games@Large提出了在服務(wù)器端攔截和捕獲3D圖形指令,并以圖形流方式傳送至客戶端進(jìn)行渲染的方法。該方法與GSGOD的原理類似,然而Games@Large基于傳統(tǒng)的端云架構(gòu),且未對網(wǎng)絡(luò)傳輸和延遲進(jìn)行優(yōu)化,導(dǎo)致其性能不佳。針對上述缺陷,GSGOD實(shí)現(xiàn)了高效緩存和對象同步機(jī)制,從而減小了圖形指令和幾何數(shù)據(jù)的傳輸量,并降低了系統(tǒng)延遲。
1.2 邊緣計(jì)算
邊緣計(jì)算使得計(jì)算發(fā)生在網(wǎng)絡(luò)的邊緣,鄰近數(shù)據(jù)產(chǎn)生的地方(即大量的終端設(shè)備)。邊緣計(jì)算的出現(xiàn)源于物聯(lián)網(wǎng)(Internet of Things, IoT)[18]和5G網(wǎng)絡(luò)的發(fā)展[19],并用于解決實(shí)時(shí)應(yīng)用的低延遲需求。邊緣計(jì)算所提供的低延遲計(jì)算依賴于大量部署的邊緣節(jié)點(diǎn),邊緣節(jié)點(diǎn)的形式有多種,包括微云(cloudlet)、網(wǎng)絡(luò)設(shè)備、基站、網(wǎng)絡(luò)互連車輛[20]等。本文所指的邊緣節(jié)點(diǎn)即微云,一種可靈活部署的鄰近終端設(shè)備的“盒中的數(shù)據(jù)中心”[9]。
邊緣計(jì)算現(xiàn)在被廣泛應(yīng)用于實(shí)時(shí)處理應(yīng)用中。Chen等[21]設(shè)計(jì)和實(shí)現(xiàn)了Glimpse,一個(gè)持續(xù)的、實(shí)時(shí)的移動(dòng)對象識別系統(tǒng)。Glimpse利用計(jì)算遷移機(jī)制[22],分離對象識別中對象捕捉和識別算法的執(zhí)行。移動(dòng)端負(fù)責(zé)捕捉動(dòng)態(tài)的視頻流以及獲取對象的位置,而服務(wù)器則執(zhí)行復(fù)雜的對象實(shí)時(shí)識別算法。Satyanarayanan團(tuán)隊(duì)在實(shí)時(shí)視頻分析應(yīng)用方面進(jìn)行了相關(guān)研究,開發(fā)了GigaSight[23],一個(gè)多層架構(gòu)的實(shí)時(shí)視頻流分析系統(tǒng)。GigaSight系統(tǒng)包含移動(dòng)設(shè)備、邊緣節(jié)點(diǎn)和云三層架構(gòu),采用一種去中心化的計(jì)算模式。在這種模式中,移動(dòng)端捕獲的實(shí)時(shí)視頻流數(shù)據(jù)存儲在鄰近的邊緣節(jié)點(diǎn)上,并在邊緣節(jié)點(diǎn)端進(jìn)行分析,只有分析的結(jié)果和元數(shù)據(jù)發(fā)送到云數(shù)據(jù)中心,以便后續(xù)的大數(shù)據(jù)分析。云游戲也是一種典型的實(shí)時(shí)應(yīng)用,對于網(wǎng)絡(luò)延遲要求高,而上述應(yīng)用的構(gòu)建,為基于邊緣計(jì)算解決云游戲的高延遲問題提供了參考價(jià)值。本文將對這一方案進(jìn)行討論和驗(yàn)證。
2 系統(tǒng)架構(gòu)
Gaming@Edge的系統(tǒng)框架如圖1所示。在Gaming@Edge中,云端負(fù)責(zé)游戲服務(wù)的注冊和發(fā)現(xiàn);當(dāng)發(fā)現(xiàn)可用的邊緣節(jié)點(diǎn)后,將用戶請求重定向到節(jié)點(diǎn),并由節(jié)點(diǎn)提供云游戲的計(jì)算服務(wù)。本文在邊緣節(jié)點(diǎn)上實(shí)現(xiàn)了一套基于壓縮圖形流的云游戲系統(tǒng)——GSGOD。GSGOD不同于傳統(tǒng)的視頻流云游戲,它實(shí)現(xiàn)了一種終端設(shè)備遷移游戲邏輯計(jì)算至邊緣節(jié)點(diǎn),并和邊緣節(jié)點(diǎn)協(xié)同計(jì)算完成游戲執(zhí)行過程的計(jì)算范型。該范型既利用云游戲便利、多平臺同步的特性,又降低了邊緣節(jié)點(diǎn)的計(jì)算負(fù)載。
GSGOD云游戲系統(tǒng)的流程如圖2所示。整個(gè)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)分為兩部分:服務(wù)器端和客戶端。首先客戶端請求一個(gè)游戲?qū)嵗?,服?wù)器響應(yīng)請求并啟動(dòng)一個(gè)游戲進(jìn)程。接著客戶端和服務(wù)器進(jìn)入一個(gè)交互循環(huán),服務(wù)器不斷接收來自客戶端的輸入,客戶端則持續(xù)執(zhí)行來自服務(wù)器端的圖形渲染指令。服務(wù)器將接收到的用戶輸入注入游戲進(jìn)程,通過3D指令代理庫攔截3D指令,經(jīng)過緩存處理和數(shù)據(jù)壓縮,形成可由網(wǎng)絡(luò)傳輸?shù)闹噶顜???蛻舳私邮盏街噶顜螅M(jìn)行解壓并協(xié)同本地緩存還原指令序列,隨后這些指令序列被執(zhí)行后得到游戲畫面。
2.1 服務(wù)器端實(shí)現(xiàn)
服務(wù)器端的核心組件是3D圖形指令代理庫。本文實(shí)現(xiàn)了一套3D指令代理庫對系統(tǒng)的圖形API進(jìn)行攔截和封裝。當(dāng)前有兩種比較常見的3D圖形API:Direct3D和OpenGL,盡管兩者存在許多實(shí)現(xiàn)細(xì)節(jié)上的差異,但基本的渲染機(jī)制和圖形算法是一致,因此兩類圖形API的代理庫實(shí)現(xiàn)原理相似。3D指令代理庫繼承圖形API的類和接口,添加了用于重建渲染場景的對象信息,并對API的某些行為進(jìn)行重寫,這些修改便于獲取場景信息,方便對象管理和對指令幀的處理。GSGOD采用hook機(jī)制攔截圖形API的調(diào)用信息,并將系統(tǒng)調(diào)用信息傳遞給代理庫,代理庫從而接管圖形對象的生成和管理。
本文將執(zhí)行每幀游戲畫面渲染的所有指令總和稱為指令幀。相鄰或間隔相近的指令幀存在許多圖形渲染指令和圖形幾何數(shù)據(jù)上的相似性。這些冗余信息若未經(jīng)數(shù)據(jù)傳輸優(yōu)化,將大幅度增加網(wǎng)絡(luò)帶寬,導(dǎo)致網(wǎng)絡(luò)性能下降。GSGOD采用高效緩存機(jī)制緩存指令和幾何數(shù)據(jù),數(shù)據(jù)分別在服務(wù)器和客戶端緩存,兩端保持緩存信息和狀態(tài)的同步,系統(tǒng)的緩存機(jī)制運(yùn)行邏輯由服務(wù)器驅(qū)動(dòng)。關(guān)于高效緩存機(jī)制的實(shí)現(xiàn)細(xì)節(jié)將在3.1節(jié)闡述。經(jīng)緩存機(jī)制優(yōu)化后傳輸?shù)闹噶顜趥鬏斨靶枰M(jìn)行壓縮,壓縮算法必須高效執(zhí)行以減少頻繁處理的延遲,本系統(tǒng)采用LZO(Lempel-Ziv-Oberhumer)算法進(jìn)行快速無損壓縮。壓縮之后的指令幀以網(wǎng)絡(luò)數(shù)據(jù)包傳輸,為了使網(wǎng)絡(luò)傳輸有效負(fù)荷最大化,GSGOD以最大傳輸單元(Maximum Transmission Unit, MTU)為標(biāo)準(zhǔn)劃分網(wǎng)絡(luò)包,同時(shí)采用TCP協(xié)議保證可靠傳輸。
2.2 客戶端實(shí)現(xiàn)
客戶端的主要任務(wù)包含:用戶輸入處理、音頻播放和渲染指令執(zhí)行。GSGOD使用SDL(Simple DirectMedia Layer)庫(https://www.libsdl.org/)捕捉用戶輸入事件和播放游戲聲音。SDL是一套跨平臺的開發(fā)庫,支持對音頻、鍵盤、鼠標(biāo)、控制桿的底層訪問,并且可以通過OpenGL庫和Direct3D庫訪問GPU。SDL的跨平臺特性使得GSGOD具備良好的可擴(kuò)展性,同時(shí)其事件通知機(jī)制可以快速響應(yīng)用戶輸入,使得用戶輸入及時(shí)傳輸至服務(wù)器從而保證系統(tǒng)的低響應(yīng)延遲。
游戲畫面的渲染是客戶端的核心任務(wù)。客戶端持續(xù)接收來自服務(wù)器的指令幀數(shù)據(jù)包,使用LZO算法快速解壓。解壓后的數(shù)據(jù)包與緩存管理模塊交互以正確讀取客戶端緩存中的指令參數(shù)和圖形幾何數(shù)據(jù)。
緩存管理模塊根據(jù)指令幀數(shù)據(jù)包的相關(guān)索引信息快速檢索本地緩存,取得緩存數(shù)據(jù)后整合數(shù)據(jù)包中已有的數(shù)據(jù),形成原始的可執(zhí)行指令。圖形渲染指令的執(zhí)行依靠具體的圖形API(Direct3D和OpenGL),而這兩種3D圖形API得到各類GPU硬件的廣泛支持,并且它們屏蔽了硬件的底層特性,因此GSGOD實(shí)現(xiàn)方案具備良好的通用性。
3 網(wǎng)絡(luò)傳輸和響應(yīng)延遲優(yōu)化機(jī)制
圖形渲染指令的正確執(zhí)行需要包含正確的指令參數(shù)、頂點(diǎn)和索引數(shù)據(jù)以及紋理數(shù)據(jù)等。這些數(shù)據(jù)的數(shù)據(jù)量大,若未經(jīng)優(yōu)化進(jìn)行傳輸將消耗大量的網(wǎng)絡(luò)帶寬。實(shí)驗(yàn)表明,游戲的相鄰畫面幀之間存在大量的場景相似性,因此圖形渲染指令和幾何數(shù)據(jù)大量重疊,這些冗余的信息可以利用緩存機(jī)制有效減少。GSGOD實(shí)現(xiàn)了一種高效的服務(wù)器和客戶端同步緩存機(jī)制,該機(jī)制能夠保證數(shù)據(jù)的有效緩存以及快速索引和讀取。響應(yīng)延遲的優(yōu)化包括兩個(gè)方面:一方面GSGOD利用圖形指令幀在服務(wù)器端和客戶端的執(zhí)行特性,設(shè)計(jì)了流水線的執(zhí)行方式,提升了兩端的執(zhí)行效率;另一方面,圖形API的許多方法調(diào)用需要返回圖形渲染硬件渲染管線的相關(guān)狀態(tài),而在GSGOD中,圖形渲染指令的計(jì)算和執(zhí)行是在服務(wù)器和客戶端異步執(zhí)行,服務(wù)器如果等待從客戶端返回的結(jié)果將導(dǎo)致不可容忍的延遲。GSGOD實(shí)現(xiàn)了根據(jù)對圖形API類對象信息追蹤和GPU硬件狀態(tài)模擬來快速返回方法調(diào)用過程的機(jī)制。
3.1 高效緩存機(jī)制
GSGOD系統(tǒng)在服務(wù)器和客戶端實(shí)現(xiàn)了一套同步緩存機(jī)制,兩者在緩存的數(shù)據(jù)以及命中狀態(tài)信息上保持一致,但在數(shù)據(jù)組織和管理上存在差異。服務(wù)器負(fù)責(zé)數(shù)據(jù)的查找和標(biāo)識,客戶端則根據(jù)服務(wù)器傳輸?shù)臉?biāo)識進(jìn)行數(shù)據(jù)的快速讀取,緩存機(jī)制運(yùn)行的邏輯由服務(wù)器驅(qū)動(dòng)。GSGOD緩存了三類圖形相關(guān)數(shù)據(jù):圖形渲染指令參數(shù)、頂點(diǎn)數(shù)據(jù)(vertex)和索引數(shù)據(jù)(index)。
3.1.1 指令參數(shù)緩存
服務(wù)器攔截封裝的指令幀包含成千上萬條的圖形渲染指令,這些圖形渲染指令多數(shù)都包含多個(gè)參數(shù),有的指令參數(shù)數(shù)據(jù)量大,可以達(dá)到成百上千個(gè)字節(jié),于是每一指令幀可能包含數(shù)千字節(jié)乃至上萬字節(jié)的參數(shù)信息。然而對于一些頻繁調(diào)用指令,在幀內(nèi)或相鄰幀調(diào)用時(shí),它們的參數(shù)往往相同。GSGOD緩存了一些高頻調(diào)用指令的參數(shù),服務(wù)器端使用哈希鏈表節(jié)點(diǎn)保存指令的參數(shù)信息,并輔以哈希表管理節(jié)點(diǎn)的查找、插入和刪除等操作,而客戶端則以簡單的數(shù)組方式存儲指令的參數(shù)。服務(wù)器每攔截一條高頻調(diào)用指令,便生成其參數(shù)的哈希值,并對比哈希鏈表節(jié)點(diǎn)中的哈希碼。如果命中某個(gè)節(jié)點(diǎn),則服務(wù)器生成一個(gè)索引值指示客戶端緩存數(shù)據(jù)的具體位置;若沒有命中,則向客戶端發(fā)送原始的參數(shù)數(shù)據(jù),并更新本地緩存數(shù)據(jù)。客戶端接收到的指令幀包含緩存命中標(biāo)志位,緩存管理模塊檢查標(biāo)志位。若標(biāo)志位標(biāo)示緩存命中,客戶端按照索引值讀取本地緩存的參數(shù)值;否則接收網(wǎng)絡(luò)包中的參數(shù)值,并更新本地緩存??蛻舳说木彺鎴?zhí)行邏輯由服務(wù)器驅(qū)動(dòng),不同于服務(wù)器哈希表的管理方式,客戶端采用數(shù)組存儲參數(shù)值。這樣的實(shí)現(xiàn)方式降低了客戶端的計(jì)算負(fù)載,同時(shí)能夠快速訪問數(shù)據(jù)。
3.1.2 頂點(diǎn)和索引數(shù)據(jù)緩存
頂點(diǎn)(Vertex)和索引(Index)數(shù)據(jù)是圖形渲染指令的重要幾何數(shù)據(jù),它們存儲了頂點(diǎn)坐標(biāo)、法線向量、切線向量、頂點(diǎn)顏色以及頂點(diǎn)索引值等信息。在復(fù)雜場景或精細(xì)模型建模的游戲中,頂點(diǎn)和索引的數(shù)據(jù)量往往很大,同時(shí)相鄰和相近幀的數(shù)據(jù)重復(fù)度很高。GSGOD緩存了一定數(shù)量的頂點(diǎn)和索引數(shù)據(jù),并且采取增量更新的方法傳輸更新的數(shù)據(jù)。服務(wù)器計(jì)算新的頂點(diǎn)和索引數(shù)據(jù)與緩存數(shù)據(jù)的差值,并以地址偏移量標(biāo)識更新數(shù)據(jù)的位置,這樣不僅縮小了編址長度同時(shí)提高了尋址速度。
3.2 響應(yīng)延遲優(yōu)化
云游戲系統(tǒng)的響應(yīng)延遲是系統(tǒng)的關(guān)鍵指標(biāo),直接影響游戲玩家的體驗(yàn)。在云游戲中,響應(yīng)延遲定義為從玩家輸入控制指令到最終得到游戲畫面的時(shí)間間隔。GSGOD系統(tǒng)的延遲組成如圖3所示,包括在服務(wù)器端指令攔截、數(shù)據(jù)包封裝,客戶端的指令執(zhí)行,以及最耗時(shí)的網(wǎng)絡(luò)傳輸。視頻流方式的云游戲系統(tǒng)(典型的如GamingAnywhere,詳見1.1節(jié))的響應(yīng)延遲構(gòu)成如圖4所示。這種方式首先在服務(wù)器端進(jìn)行畫面渲染,然后通過視頻編碼生成視頻流,隨后進(jìn)行網(wǎng)絡(luò)傳輸。
在GSGOD中,為了降低系統(tǒng)延遲,加快云游戲的執(zhí)行流程,采用了流水線處理機(jī)制。圖5說明了GSGOD系統(tǒng)的處理流程,RD(Response Delay)代表系統(tǒng)的響應(yīng)延遲。服務(wù)器的總處理時(shí)間用SP(Server Processing)表示。用戶輸入經(jīng)過ND(Network Delay)網(wǎng)絡(luò)延遲時(shí)間之后到達(dá)服務(wù)器,服務(wù)器將用戶輸入注入正在運(yùn)行的游戲之中并執(zhí)行游戲邏輯,隨后開始產(chǎn)生圖形渲染指令;經(jīng)過短暫的啟動(dòng)時(shí)間PB(Pipeline Beginning),圖形渲染指令及其相關(guān)的圖形數(shù)據(jù)被封裝成數(shù)據(jù)包送往客戶端,客戶端隨即開始執(zhí)行渲染指令。這里需要注意的是,服務(wù)器不會等待一個(gè)完整的游戲幀處理結(jié)束才開始數(shù)據(jù)傳輸,而是當(dāng)數(shù)據(jù)量達(dá)到一個(gè)閾值(比如一個(gè)MTU)就立即開始傳輸。服務(wù)器端生成渲染指令、指令數(shù)據(jù)網(wǎng)絡(luò)傳輸、客戶端執(zhí)行渲染指令三者并發(fā)執(zhí)行,實(shí)現(xiàn)了一種處理流水線,并持續(xù)一個(gè)時(shí)間周期PR(Pipeline Running)。最后,客戶端在接收到所有圖形數(shù)據(jù)之后的PS時(shí)間(Pipeline Stalling),完成游戲幀的渲染,整個(gè)客戶端的處理時(shí)間為CP(Client Processing)。
視頻流方式的云游戲系統(tǒng)的處理流程如圖6所示。在視頻流方式中,服務(wù)器花費(fèi)SP(Server Processing)時(shí)間處理從用戶輸入注入游戲直至視頻流傳輸至客戶端的過程。服務(wù)器端的主要處理過程包括執(zhí)行游戲邏輯從而生成圖形渲染指令、游戲畫面渲染、內(nèi)存數(shù)據(jù)拷貝及格式轉(zhuǎn)換、使用H.264協(xié)議進(jìn)行視頻編碼以及最后的封裝數(shù)據(jù)包進(jìn)行傳輸。這些操作在游戲畫面幀粒度層次上并行,而GSGOD在更細(xì)粒度的指令數(shù)據(jù)包上流水處理,因此GSGOD在整體的延遲上較視頻流有優(yōu)勢。
3.3 對象管理和狀態(tài)同步
GSGOD攔截了游戲的圖形渲染指令,使指令在服務(wù)器和客戶端異步執(zhí)行。服務(wù)器并不執(zhí)行畫面的渲染,但其需要掌握當(dāng)前圖形API類對象以及GPU硬件渲染管線(Pipeline)的狀態(tài),而服務(wù)器和客戶端的異步執(zhí)行大幅度增加了服務(wù)器同步客戶端狀態(tài)的響應(yīng)時(shí)間。GSGOD維護(hù)了服務(wù)器和客戶端圖形API類對象列表,在圖形渲染指令執(zhí)行過程中,每一個(gè)對象的初始化操作將在服務(wù)器和客戶端同時(shí)生成圖形對象,并設(shè)置一致的對象ID進(jìn)行對象索引。這種方式保證了類對象的快速調(diào)用和狀態(tài)同步。同時(shí)GSGOD實(shí)現(xiàn)了硬件狀態(tài)模擬機(jī)制:系統(tǒng)初始化時(shí),服務(wù)器獲取客戶端的GPU相關(guān)參數(shù),這些參數(shù)合并服務(wù)器自身的GPU參數(shù),形成一個(gè)標(biāo)準(zhǔn)參數(shù)集合;當(dāng)圖形API類對象需要獲取和設(shè)置GPU狀態(tài)時(shí),服務(wù)器以自身GPU狀態(tài)模擬客戶端硬件執(zhí)行,并預(yù)測對象方法的返回值。該機(jī)制確保了GSGOD圖形渲染指令的快速執(zhí)行和返回,減少了端到端的延遲。
針對圖形渲染指令中一些臨界資源(互斥訪問資源)的訪問操作,GSGOD實(shí)現(xiàn)了一種延遲狀態(tài)同步機(jī)制。這些資源訪問操作包含頂點(diǎn)和索引的更新、表面繪制、紋理映射等,這些方法涉及到臨界資源的鎖(lock)和解鎖(unlock)等費(fèi)時(shí)操作。在場景繪制中,通常需要在短時(shí)間內(nèi)頻繁地訪問臨界資源,而在服務(wù)器和客戶端異步執(zhí)行時(shí),若每次訪問臨界資源都執(zhí)行端到端的狀態(tài)同步,將導(dǎo)致大量的時(shí)間開銷。在實(shí)際運(yùn)行中,上述的資源訪問操作在多數(shù)情況下并未立即生效,因此GSGOD實(shí)現(xiàn)了一種端到端的狀態(tài)延遲同步機(jī)制,即直到資源狀態(tài)真正改變時(shí)才執(zhí)行同步。延遲同步機(jī)制合并了資源訪問操作,減小了頻繁資源更新的時(shí)間開銷。
4 系統(tǒng)評估
Gaming@Edge中游戲服務(wù)注冊,邊緣節(jié)點(diǎn)的注冊和發(fā)現(xiàn)以及資源管理采用Python語言實(shí)現(xiàn),而GSGOD目前實(shí)現(xiàn)了Direct3D的版本,基于C++語言實(shí)現(xiàn),代碼超過20000行。本章從三個(gè)方面對GSGOD的性能進(jìn)行評估:游戲?qū)嵗姆?wù)器并發(fā)測試、系統(tǒng)響應(yīng)延遲以及緩存機(jī)制性能。實(shí)驗(yàn)搭建了一臺具有高性能GPU的服務(wù)器作為邊緣節(jié)點(diǎn),服務(wù)器使用VMware Workstation技術(shù)提供虛擬桌面連接,宿主機(jī)和虛擬主機(jī)均采用Windows 7操作系統(tǒng),每個(gè)客戶端連接一個(gè)虛擬主機(jī),具體的實(shí)驗(yàn)環(huán)境配置參見表1,實(shí)驗(yàn)平臺的部署如圖7所示。
本實(shí)驗(yàn)選取了三類不同的熱門3D游戲進(jìn)行系統(tǒng)測試,分別是休閑類游戲SprillRitchie、策略類游戲CastleStorm和動(dòng)作類游戲Trine。經(jīng)實(shí)驗(yàn)測試,游戲CastleStorm和Trine的邏輯計(jì)算和渲染計(jì)算復(fù)雜度均高于SprillRitchie。為了對比視頻流云游戲系統(tǒng)的性能,本實(shí)驗(yàn)采用GamingAnywhere(GA)[11]作為視頻流云游戲機(jī)制的參照系統(tǒng)。如1.1節(jié)所述,GA是學(xué)術(shù)界知名的開源視頻流云游戲系統(tǒng),由臺灣幾所大學(xué)聯(lián)合開發(fā)。GA系統(tǒng)實(shí)現(xiàn)了視頻流云游戲機(jī)制的完整功能,即客戶端的輸入處理和畫面輸出,服務(wù)器的游戲執(zhí)行、畫面渲染以及視頻流的壓縮和傳輸;同時(shí),它還優(yōu)化了系統(tǒng)的擴(kuò)展性、移植性和配置性。
4.1 游戲?qū)嵗l(fā)測試
本節(jié)測試服務(wù)器游戲?qū)嵗牟l(fā)能力,即隨著客戶端連接數(shù)目不斷增加(服務(wù)器并發(fā)的游戲?qū)嵗饾u增加),服務(wù)器的幀速率(Frames Per Second, FPS)、CPU利用率和GPU利用率。本節(jié)測試服務(wù)器游戲?qū)嵗牟l(fā)能力,即測試當(dāng)客戶端連接數(shù)目不斷增加時(shí)(服務(wù)器并發(fā)的游戲?qū)嵗饾u增加),服務(wù)器的幀速率(Frames Per Second, FPS)、CPU利用率和GPU利用率的變化情況。此處語句不通順幀速率表明了圖形處理器每秒能夠渲染刷新的畫面幀數(shù)目,它是一種綜合體現(xiàn)圖形處理設(shè)備渲染能力的指標(biāo)。幀速率高于每秒10~12幀時(shí),畫面被認(rèn)為是連貫的,一般認(rèn)為FPS大于25幀時(shí),游戲畫面是流暢的。在并發(fā)測試中,每個(gè)客戶端連接一個(gè)虛擬機(jī)(Virtual Machine, VM),每個(gè)虛擬機(jī)運(yùn)行一個(gè)游戲?qū)嵗?,一個(gè)虛擬機(jī)分配1GB內(nèi)存。圖8圖8、圖9、圖10分別顯示了3個(gè)游戲在虛擬機(jī)個(gè)數(shù)從1到8情況下服務(wù)器的性能表現(xiàn),其中FPS為計(jì)算所有虛擬機(jī)幀速率的平均值。實(shí)驗(yàn)結(jié)果表明GSGOD系統(tǒng)在三個(gè)指標(biāo)上均優(yōu)于GA,即服務(wù)器整體的負(fù)載小,游戲運(yùn)行綜合性能好。這主要因?yàn)镚SGOD實(shí)現(xiàn)的圖形流云游戲機(jī)制采取游戲邏輯和圖形渲染分離的機(jī)制,并由客戶端執(zhí)行圖形渲染,從而降低了服務(wù)器的負(fù)載,大幅度提升了服務(wù)器的整體性能。
4.1.1 游戲?qū)嵗l(fā)性能
游戲?qū)嵗l(fā)性能反映了服務(wù)器運(yùn)行的綜合性能,即在相同硬件配置下,服務(wù)器能夠運(yùn)行的最大有效游戲?qū)嵗龜?shù)目。這里“有效”游戲?qū)嵗赣螒蜻\(yùn)行時(shí)FPS能夠大于某個(gè)閾值(以25FPS為基準(zhǔn)),達(dá)到運(yùn)行流暢的標(biāo)準(zhǔn)。表2對比了GSGOD和GA系統(tǒng)在CastleStorm和Trine中(SprillRitchie邏輯較為簡單,當(dāng)服務(wù)器達(dá)到最大承載虛擬機(jī)數(shù)時(shí),其FPS仍高于游戲流暢標(biāo)準(zhǔn),因此不作對比。)游戲?qū)嵗l(fā)性能,可以看出GSGOD分別取得1.67倍和7倍的性能提升。
4.1.2 CPU和GPU利用率
GSGOD不僅獲得了良好的游戲FPS性能,同時(shí)其服務(wù)器的CPU利用率也相對較低。GSGOD的3D指令代理庫在攔截渲染指令時(shí),增加了額外的計(jì)算開銷,但是這些開銷低于GA在游戲畫面視頻編碼時(shí)產(chǎn)生的計(jì)算開銷,因此GSGOD系統(tǒng)服務(wù)器CPU計(jì)算負(fù)載更低。隨著游戲復(fù)雜度的增加,這種趨勢更加明顯。
實(shí)驗(yàn)結(jié)果中三個(gè)游戲的GPU利用率呈現(xiàn)出不同的變化趨勢,但總體看來GSGOD仍然顯著低于GA系統(tǒng)。GPU利用率跟游戲自身特性以及游戲的幀速率密切相關(guān)。通常情況下,當(dāng)游戲場景越復(fù)雜、幀速率越高時(shí),GPU渲染的負(fù)載越高。SprillRitchie是休閑類游戲,畫面復(fù)雜度低,GPU能夠以較少的處理時(shí)間高速渲染游戲場景,因此表現(xiàn)出很高的幀速率和較高的GPU利用率,而CastleStorm和Trine兩款游戲由于場景復(fù)雜,對象模型數(shù)據(jù)量大以及眾多的紋理和光影特效等,使得GPU渲染游戲的負(fù)載增長較為平穩(wěn)。三個(gè)游戲的GPU利用率變化先是隨著游戲?qū)嵗龜?shù)的增加而升高,達(dá)到一定閾值之后,實(shí)驗(yàn)硬件設(shè)備達(dá)到較大的負(fù)載,隨后游戲的整體幀速率下降明顯,GPU利用率也隨之下降。在GSGOD中,雖然服務(wù)器端不執(zhí)行圖形的渲染,但是一些圖形操作,如圖形指令生成、模型加載以及紋理的處理等仍然需要大量GPU的參與,因此當(dāng)游戲?qū)嵗龜?shù)增加時(shí),GPU的負(fù)載隨之增加。由于GSGOD系統(tǒng)遷移了大部分的渲染任務(wù),因此其GPU利用率較GA有明顯的下降;同時(shí)視頻流方案中,游戲畫面的實(shí)時(shí)壓縮使得渲染數(shù)據(jù)在GPU專屬內(nèi)存和系統(tǒng)內(nèi)存中頻繁拷貝,導(dǎo)致了系統(tǒng)處理時(shí)間增加,而多個(gè)虛擬機(jī)共享GPU也加劇了其性能的下降。
4.2 系統(tǒng)響應(yīng)延遲
云游戲系統(tǒng)作為一個(gè)實(shí)時(shí)系統(tǒng),對系統(tǒng)的響應(yīng)延遲有很高的要求,不同類型的游戲?qū)τ诙说蕉搜舆t有明確限定[24]。云游戲的響應(yīng)延遲定義為:從客戶端接收一個(gè)用戶輸入,直至用戶最終在客戶端看到由該輸入觸發(fā)的游戲畫面幀為止的時(shí)間間隔[25]。GSGOD系統(tǒng)的響應(yīng)延遲包含三部分:網(wǎng)絡(luò)傳輸延遲,通常情況下可以認(rèn)為是網(wǎng)絡(luò)的往返時(shí)延RTT;服務(wù)器處理用戶請求的時(shí)間,即服務(wù)器接收用戶輸入并注入到游戲中,隨后執(zhí)行邏輯處理,完成某一特定幀渲染指令的封裝,并傳輸該幀數(shù)據(jù)包的總時(shí)間開銷;客戶端完成幀渲染的時(shí)間,即客戶端接收到來自服務(wù)器的數(shù)據(jù)包并調(diào)用圖形API完成幀渲染的時(shí)間。GA系統(tǒng)的響應(yīng)延遲劃分與GSGOD類似,但是其服務(wù)器處理請求需要完成畫面渲染和視頻壓縮,而客戶端則是播放視頻。關(guān)于兩個(gè)系統(tǒng)的延遲構(gòu)成細(xì)節(jié)可以參閱3.2節(jié)。
測試響應(yīng)延遲是一項(xiàng)復(fù)雜的工作,主要是由于系統(tǒng)很難捕獲用戶輸入所指向的特定幀。文獻(xiàn)[25]通過測定特殊畫面(如游戲菜單選擇界面)的像素值變化來判斷用戶輸入所產(chǎn)生的渲染畫面,該方式具有一定的特殊性,無法測試游戲運(yùn)行過程中不同場景的延遲。本實(shí)驗(yàn)的方法是通過向服務(wù)器發(fā)送特殊的鍵盤輸入(如F8),服務(wù)器接收到該輸入指令后,在當(dāng)前幀的下一幀執(zhí)行輸入請求,完成指令封裝或者幀渲染處理之后立即將數(shù)據(jù)返回給客戶端,其中的時(shí)間間隔即為該輸入產(chǎn)生的延遲。本實(shí)驗(yàn)分別對三個(gè)游戲進(jìn)行300次延遲采樣,圖119對比了兩個(gè)系統(tǒng)的平均響應(yīng)延遲(300次延遲的平均值)。結(jié)果表明GSGOD的平均響應(yīng)延遲遠(yuǎn)低于GA,主要是由于GSGOD端到端更快的流水線處理(如3.2節(jié)所述)。在GSGOD系統(tǒng)中,服務(wù)器渲染指令的攔截,數(shù)據(jù)包的封裝和發(fā)送可以快速啟動(dòng)而不必等待完整一幀指令全部產(chǎn)生,即一旦指令產(chǎn)生,就可以開始數(shù)據(jù)封裝和網(wǎng)絡(luò)傳輸。該方式加快了服務(wù)器和客戶端的渲染同步,降低了系統(tǒng)響應(yīng)延遲。
4.3 緩存機(jī)制性能
緩存機(jī)制在GSGOD系統(tǒng)中發(fā)揮重要的作用,本節(jié)評估了緩存機(jī)制的性能。實(shí)驗(yàn)針對GSGOD在游戲運(yùn)行過程中Direct3D庫高頻調(diào)用方法的一個(gè)子集:{SetIndices,SetStreamSource,SetTexture,DrawIndexedPrimitives}的緩存性能進(jìn)行了評估。實(shí)驗(yàn)中,分別運(yùn)行三個(gè)游戲5min,記錄其總渲染幀數(shù)、高頻子集的總調(diào)用次數(shù)和總命中次數(shù),實(shí)驗(yàn)結(jié)果如表3所示。結(jié)果表明,高頻調(diào)用方法集在游戲渲染中調(diào)用頻繁,并且指令參數(shù)緩存機(jī)制具備很高的命中率,將節(jié)省大量的網(wǎng)絡(luò)傳輸帶寬。
5 結(jié)語
云游戲是云計(jì)算的“殺手級”應(yīng)用,它帶來了游戲運(yùn)行方式的革命性變革,但是受限于客戶端與云數(shù)據(jù)中心較大的響應(yīng)延遲,云游戲體驗(yàn)不佳。本文提出一種基于邊緣節(jié)點(diǎn)部署的云游戲運(yùn)行框架——Gaming@Edge,該框架能夠有效降低系統(tǒng)的延遲;同時(shí),為了降低邊緣節(jié)點(diǎn)的計(jì)算負(fù)載,Gaming@Edge設(shè)計(jì)和實(shí)現(xiàn)了一種基于壓縮圖形流的云游戲運(yùn)行機(jī)制——GSGOD。GSGOD通過攔截游戲渲染的3D圖形指令,并遷移至客戶端進(jìn)行本地渲染的方式,實(shí)現(xiàn)了一種客戶端和邊緣節(jié)點(diǎn)的計(jì)算融合。這種方式既繼承了云游戲諸多優(yōu)點(diǎn),又有效降低了邊緣節(jié)點(diǎn)的計(jì)算負(fù)載。此外,GSGOD通過高效的緩存機(jī)制優(yōu)化了網(wǎng)絡(luò)數(shù)據(jù)量的傳輸,同時(shí)基于指令流水線處理、對硬件狀態(tài)模擬的異步執(zhí)行方式,以及延遲狀態(tài)同步等方法,降低了系統(tǒng)端到端的延遲。最后,本文從系統(tǒng)的并發(fā)性、游戲的響應(yīng)延遲以及緩存性能等三個(gè)方面綜合評估了系統(tǒng)性能。實(shí)驗(yàn)結(jié)果表明GSGOD顯著提升了服務(wù)器游戲?qū)嵗l(fā)性能,同時(shí)獲得較小的系統(tǒng)響應(yīng)延遲。
參考文獻(xiàn) (References)
[1] ROSS P E. Cloud computings killer app: gaming [J]. IEEE Spectrum, 2009, 46(3): 14.
[2] CAI W, SHEA R, HUANG C Y, et al. The future of cloud gaming point of view] [J]. Proceedings of the IEEE, 2016, 104(4): 687-691.
[3] USMAN M, IQBAL A, KIRAN M. A bandwidth friendly architecture for cloud gaming [C]// Proceedings of the 2017 IEEE International Conference on Information Networking. Piscataway, NJ: IEEE, 2017: 179-184.
[4] SHEA R, LIU J C, NGAI E C H, et al. Cloud gaming: architecture and performance [J]. IEEE Network, 2013, 27(4): 16-21.
[5] DOWTY M, SUGERMAN J. GPU virtualization on VMwares hosted I/O architecture [J]. ACM SIGOPS Operating Systems Review, 2009, 43(3): 73-82.
[6] ZHANG W, LIAO X F, LI P, et al. ShareRender: bypassing GPU virtualization to enable fine-grained resource sharing for cloud gaming [C]// Proceedings of the 25th ACM International Conference on Multimedia. New York: ACM, 2017: 324-332.
[7] 施魏松,孫輝,曹杰,等.邊緣計(jì)算:萬物互聯(lián)時(shí)代新型計(jì)算模型[J].計(jì)算機(jī)研究與發(fā)展,2017,54(5):907-924.(SHI W S, SUN H, CAO J, et al. Edge computing—an emerging computing model for the Internet of everything era [J]. Journal of Computer Research and Development, 2017, 54(5): 907-924.)
[8] SHI W S, CAO J, ZHANG Q, et al. Edge computing: vision and challenges [J]. IEEE Internet of Things Journal, 2016, 3(5): 637-646.
[9] SATYANARAYANAN M, BAHL V, CACERES R, et al. The case for VM-based cloudlets in mobile computing [J]. IEEE Pervasive Computing, 2009, 8(4): 14-23.
[10] LIAO X F, LIN L, TAN G, et al. LiveRender: a cloud gaming system based on compressed graphics streaming [J]. IEEE/ACM Transactions on Networking, 2016, 24(4): 2128-2139.
[11] HUANG C Y, HSU C H, CHANG Y C, et al. GamingAnywhere: an open cloud gaming system [C]// Proceedings of the 4th ACM Multimedia Systems Conference. New York: ACM, 2013: 36-47.
[12] SHI S, HSU C H, NAHRSTEDT K, et al. Using graphics rendering contexts to enhance the real-time video coding for mobile cloud gaming [C]// Proceedings of the 19th ACM International Conference on Multimedia. New York: ACM, 2011: 103-112.
[13] LEE K, CHU D, CUERVO E, et al. Outatime: using speculation to enable low-latency continuous interaction for mobile cloud gaming [C]// Proceedings of the 13th Annual International Conference on Mobile Systems, Applications, and Services. New York: ACM, 2015: 151-165.
[14] LIN Y, SHEN H. CloudFog: leveraging fog to extend cloud gaming for thin-client MMOG with high quality of service [J]. IEEE Transactions on Parallel and Distributed Systems, 2017, 28(2): 431-445.
[15] NAVE I, DAVID H, SHANI A, et al. Games@Large graphics streaming architecture [C]// Proceedings of the 2008 IEEE International Symposium on Consumer Electronics. Piscataway, NJ: IEEE, 2008: 1-4.
[16] EISERT P, FECHTELER P. Low delay streaming of computer graphics [C]// Proceedings of the 15th IEEE International Conference on Image Processing. Piscataway, NJ: IEEE, 2008: 2704-2707.
[17] JURGELIONIS A, FECHTELER P, EISERT P, et al. Platform for distributed 3D gaming [J]. International Journal of Computer Games Technology, 2009, 2009(1): 1-15.
[18] GUBBI J, BUYYA R, MARUSIC S, et al. Internet of Things (IoT): a vision, architectural elements, and future directions [J]. Future Generation Computer Systems, 2013, 29(7): 1645-1660.
[19] HU Y C, PATEL M, SABELLA D, et al. Mobile edge computing—a key technology towards 5G [J]. ETSI White Paper, 2015, 11(11): 1-16.
[20] 劉小洋,伍民友.車聯(lián)網(wǎng):物聯(lián)網(wǎng)在城市交通網(wǎng)絡(luò)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2012,32(4):900-904.(LIU X Y, WU M Y. Vehicular CPS: an application of IoT in vehicular networks [J]. Journal of Computer Applications, 2012, 32(4): 900-904.)
[21] CHEN T Y, RAVINDRANATH L, DENG S, et al. Glimpse: continuous, real-time object recognition on mobile devices [C]// Proceedings of the 13th ACM Conference on Embedded Networked Sensor Systems. New York: ACM, 2015: 155-168.
[22] DINH H T, LEE C, NIYATO D, et al. A survey of mobile cloud computing: architecture, applications, and approaches [J]. Wireless Communications and Mobile Computing, 2013, 13(18): 1587-1611.
[23] SATYANARAYANAN M, SIMOENS P, XAIO Y, et al. Edge analytics in the Internet of things [J]. IEEE Pervasive Computing, 2015, 14(2): 24-31.
[24] CLAYPOOL M, CLAYPOOL K. Latency and player actions in online games [J]. Communications of the ACM, 2006, 49(11): 40-45.
[25] CHEN K T, CHANG Y C, TSENG P H, et al. Measuring the latency of cloud gaming systems [C]// Proceedings of the 19th ACM International Conference on Multimedia. New York: ACM, 2011: 1269-1272.