APP下载

GPU虚拟化环境下云游戏性能分析

2018-03-27戴加伟白光伟王仲晖

小型微型计算机系统 2018年2期
关键词:虚拟化客户端编码

戴加伟,白光伟,沈 航,王仲晖

(南京工业大学 计算机科学与技术学院,南京 211816)

1 引 言

云游戏[1]指将电脑游戏运行在云服务器上,通过强大的计算能力对游戏画面进行渲染、捕获和压缩后发送给低计算能力的瘦客户端,而用户在瘦客户端通过网络与游戏交互.瘦客户端是轻量级的,只负责解码和显示游戏画面,可以移植到资源受限的平台,如移动设备和电视机顶盒等.用户可以在任何地方任何时间体验最新的电脑游戏,游戏开发者也可以根据云游戏系统特定的硬件配置来优化他们的游戏.

虽然云游戏以一种全新的方式向用户提供更高品质的游戏体验,但是如何在保证用户体验的情况下控制硬件成本仍然是一个棘手的问题.例如OnLive为优化用户体验陷入财政困难.如果使用低端硬件会导致不愉快的用户体验,这可能会促使用户放弃云游戏,但是使用高端硬件,按照以往一个用户必须对应一台实体服务器的方式,会产生高额的硬件成本.此外,不同的游戏类型有不同的硬件要求,如果不按照游戏的需求合理分配服务器的资源,可能会导致资源的不足或浪费.例如按照3D射击游戏设置的硬件配置,在运行2D休闲游戏时就会性能过剩.

虚拟化是整合云游戏系统资源,降低硬件成本的关键[2,3].它允许多个云游戏共享物理服务器资源,同时保持隔离和保证性能.目前CPU、网络接口和存储的虚拟化已经相当成熟,但是GPU设备由于结构和技术文档未对外公开,而且每次更新都伴随着巨大的结构变化,因此GPU虚拟化的实施尤为困难.文献[4,5]指出GPU虚拟化将导致不佳的游戏体验,例如低帧速率、高响应延迟和低画面质量.然而,过去的几年里,GPU虚拟化技术得到了极大的改善,可以更加高效的实现虚拟机对GPU资源的共享.为此,本文使用最新的GPU虚拟化技术和开源的云游戏平台搭建原型系统.该系统将云游戏运行在虚拟机中,实现服务器资源的共享.在此基础上,提出性能评价指标和测量方法,并有针对性的进行大量实验,分析云游戏在GPU虚拟化环境下的性能.

基于上述原型系统,本文试图回答:最新的GPU虚拟化技术能否支持GPU密集型的云游戏在虚拟机中流畅运行?实验结果表明:最新的GPU虚拟化技术可以给虚拟机提供较高的图形加速性能,在保证云游戏用户体验的同时实现GPU资源共享和公平分配.另外实验还发现,使用GPU进行硬件编码可以提高游戏视频编码效率.

本文的结构安排为:第2节提出问题;第3节设计原型系统;第4节提出性能指标与测量方法;第5节设计实验并分析结果;第6节总结全文.

2 问题提出

将云游戏系统直接运行在物理服务器上,一台服务器只服务一个用户的方式给云游戏提供商带来巨大的经济负担.为了优化服务器资源分配,可以将云游戏运行在虚拟机中,使一台服务器能同时运行更多的云游戏实例.但是,虚拟机的图形处理能力不足以支持一些GPU密集型的游戏流畅运行,限制了云游戏在虚拟化环境中的实施.CPU处理图形的效率低下,而GPU擅长处理大型矩阵型数据的整体计算,其图形处理性能可达CPU的数十倍.在虚拟机中使用GPU结合CPU进行图形计算,可以大幅提高图形处理性能[6-7].

针对上述问题,文献[8]实现了一种PCI直通的虚拟机图形加速技术,不经虚拟机管理系统(Virtual Machine Monitor,VMM)[9],直接将GPU分配给一台虚拟机,该虚拟机将获得GPU的全部性能.但是此方法禁止了其他虚拟机对GPU的访问,违背了虚拟化资源共享与动态分配的设计初衷.文献[10]使用API重定向的方法实现虚拟机对物理GPU的共享,通过虚拟的显卡驱动欺骗应用程序的API来调用GPU.但是这种方式需要消耗大量的额外资源来做驱动的模拟仿真、API的拦截、传递等多种复杂的软件计算过程,效率较低.

作为首个实现直接共享GPU的方案,vGPU[11]通过安装在虚拟机上的图形驱动能够直接访问切片后的GPU资源.这种方式能发挥出物理GPU的更多性能,从而实现虚拟机更高的图形处理能力和扩展能力.此外,GamingAnywhere[12]作为第一个开源的云游戏平台,拥有高扩展性、可移植性和可重构性,并且在低网络带宽下实现了低延迟和高画质.

多个虚拟机共享GPU后的图形处理性能决定了云游戏能否在虚拟化环境中实施.为此,本文使用vGPU和GamingAnywhere搭建一个云游戏原型系统,分析在云游戏系统中使用vGPU实现GPU共享的可行性

3 原型系统设计

本节设计GPU虚拟化环境下的云游戏原型系统,用于对多个云游戏共享GPU后的性能进行测试评估.首先分析云游戏的系统架构和交互流程,然后设计并搭建原型系统,实现GPU资源共享.

3.1 系统整体架构

云游戏系统架构由门户服务器、游戏服务器和客户端三部分组成.如图1所示,门户服务器负责用户登录,并根据用户选择的游戏查找合适的游戏服务器,控制该服务器启动虚拟机,再将虚拟机的地址告知客户端.用户与虚拟机建立连接后,就可以通过网络与运行在远程服务器上的游戏进行交互.

图1 云游戏系统架构Fig.1 Architectures of cloud gaming

3.2 系统交互流程

客户端与游戏服务器之间的交互流程如图2所示.游戏服务器负责处理收到的输入事件,并转化为游戏动作,再将捕获的游戏画面编码后以视频流的形式发送给客户端.客户端负责实时显示收到的游戏画面,并将用户的输入如键盘、鼠标的动作发送到游戏服务器.通过这种方式,可以将游戏的图形渲染卸载到云端处理,客户端只需要处理简单的2D视频图像显示,极大的减小了客户端的负载.

图2 云游戏交互流程Fig.2 Interactive of cloud gaming

3.3 原型系统部署

门户服务器对云游戏的性能没有直接的影响,为了简化实验流程,原型系统只考虑游戏服务器和客户端之间的交互.如图3所示,原型系统包括两台服务器、一台路由器和多台客户端.两台服务器采用完全一致的硬件配置,都是Intel Core E3 1231 v3处理器和NVIDIA GRID K2显卡.路由器安装并运行dummynet[13],用以调节延迟、丢包率和网络带宽模拟真实的网络环境.此外,桌面虚拟化平台采用XenDesktop,安装Windows7操作系统.云游戏系统采用开源的GamingAnywhere,一台服务器在虚拟机中运行云游戏,另一台服务器将云游戏直接运行在物理机上.

原型系统使用vGPU在云游戏中实现GPU资源共享,具体实现方法如图3所示.在云游戏服务器上安装XenServer虚拟化平台,并将云游戏运行在虚拟机中.根据游戏的性能需求,将物理GPU分片成多个vGPU设备,再直接分配给虚拟机.通过运行在Hypervisor管理域(Dom0)的vGPU管理程序,云游戏可以像使用本地的GPU一样快速访问vGPU,共享同一个物理GPU的计算资源.

图3 原型系统部署Fig.3 Deployment ofprototype system

4 性能指标和测量方法

4.1 性能指标

画面质量和响应延迟是影响云游戏用户体验的关键性能指标.所以,实验将从这两方面比较系统在GPU虚拟化环境中与在物理环境中的性能差异.

视频流的质量直接影响游戏体验,这里使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似性(Structural Similarity,SSIM)[14]两个指标来评价画面质量.PSNR基于对应像素点间的误差评价图像质量.SSIM用于度量结构相似性,也是一种全参考的图像质量评价指标,它分别从亮度、对比度、结构三方面度量图像相似性.

响应延迟[15](RD)是用户提交操作命令到相应的游戏画面出现在屏幕上的时间,它是决定云游戏用户体验的主要因素.这里将响应延迟分为3部分:

1)处理延迟(PD):服务器接收和处理一个用户的命令并将相应的帧进行编码和传输所需的时间.

2)播放延迟(OD):客户端接收、解码和渲染一帧所需的时间.

3)网络延迟(ND):服务器和客户端之间进行一轮数据交互所需的时间,也被称为往返时间(RTT).

4.2 测量方法

图4表示一个游戏指令响应的过程.按键事件在t0时刻产生,发送给服务器端处理.服务器在t1时刻接收事件,处理完成后,在t2时刻将编码帧发送给客户端.客户端在t3时刻接收到帧,在t4时刻观察到游戏画面改变.

当测量出t4的值,就可以得到RD=t4-t0.t4的测量过程如下:

1)发送按键事件到服务器端,并记录时刻为t0.

2)游戏画面一直在刷新,通过检测特定区域的像素值,可以确定游戏画面是否发生改变.

3)当检测到像素值改变时,说明按键事件已经被服务器端处理,并返回处理后的画面到客户端,记录这个时刻为t4.

t3是游戏画面从服务器传递到客户端的时刻.如果在t3时刻之前阻塞数据的传入,游戏画面在取消阻塞之前都不会改变.如果传入的数据在t3时刻之后被阻塞,游戏画面仍会改变,但没有后续的画面更新.为了方便数据的拦截,这里使用windows的hook机制,拦截客户端对recvfrom()函数的调用.这个函数在尝试从UDP/IP 堆栈中检索UDP数据报时会被调用.

当测量出t3的值,就可以得到PD=t3-t0-ND,OD=t4-t3.ND的值可以通过发送一个探测数据包来测量,例如ICMP协议.t3的测量过程如下:

1)发送一个按键事件到服务器端,并记录这个时刻为t0.这里假设播放延迟OD小于100ms,在RD-100ms和RD+50ms之间取一个随机数记作tblock.

2)如果游戏画面改变的时刻小于tblock,记录这个时间为tchange,并结束程序.否则,在tblock之后的一秒内拦截对recvfrom()函数的调用.

3)取消对recvfrom()函数的拦截,当游戏画面改变时,记录这个时间为tchange.

图4 响应延迟分解Fig.4 Decomposition of response delay

如果tchange>tblock+1s,则表示阻塞成功,并得出t3>tblock,就把tblock加入集合tblock_succeeded.否则,如果tchange

5 实验设计和性能分析

vGPU实现了虚拟机对GPU的共享,一台服务器可以同时运行多个云游戏实例,显著的提高了GPU资源的利用效率.但是共享GPU可能会影响云游戏的用户体验,为了验证该方案的可行性,本节设计实验测试vGPU的图形加速性能,分析虚拟机数量对vGPU图形加速性能的影响,并在完整的云游戏平台中进行端到端的测试,分别从延迟和画质两方面分析使用vGPU技术共享GPU对用户体验的影响.

5.1 vGPU的图形加速性能

本实验对vGPU的图形加速性能进行测试,并通过对比vSGA分析vGPU的性能提升.实验在一台服务器上使用vSGA技术,在另一台服务器上使用vGPU技术,实现GPU共享.采用Heaven Benchmark和REDsdk Turbine Benchmark两款测试工具分别测试两个平台上虚拟机的图形处理能力.

Heaven Benchmark的测试结果如图5所示.vSGA平台上的测试画面的帧率在0~5帧之间波动.物理GPU的平均利用率只有20%,而且非常不稳定,在图像无法渲染的时候,甚至降低到了1%.而vGPU平台上的测试画面的帧率一直保持在25帧以上,物理GPU的利用率也高于50%,且利用率曲线相对平滑,状态稳定.REDsdk Turbine Benchmark每个测试项目的得分如表1所示.最后的总分vSGA平台只得到了73分,而vGPU平台是2647分.两者之间测试画面的播放效果也基本反映了这些测试数值的差距,vGPU平台的图像流畅,vSGA平台的帧率太低,图像显示不全.

图5 帧率和GPU利用率对比Fig.5 Comparison of frame rate and GPU utilization ratio

实时画面高质量画面动态封闭空间混合射线追踪总分vSGA218191225673vGPU31382463631310062647

从这些测试情况可以看出,vSGA的虚拟显卡驱动程序效率低下,对物理GPU的处理能力利用不足,而vGPU对显卡的利用率更高,能发挥出显卡的大部分性能,相较vSGA在帧率上有了10倍的提升.

5.2 虚拟机数量对图形加速性能的影响

本实验在XenServer平台上量化分析虚拟机数量对vGPU图形加速性能的影响.实验通过配置K2显卡的GPU虚拟模式为vgpu8(即将一个显卡核心分片成8个虚拟GPU),逐步添加更多的虚拟机(从1至8),分别测试在不同环境下四种游戏运行时的FPS.

测试结果如图6所示,结果表明Limbo和Barman没有触及显卡的性能瓶颈,所以随着虚拟机数量的增加FPS没有改变,而FEAR和DOW在虚拟机数量从4增加到6时,FPS分别下降了15和18,这表明分配给虚拟机的图形计算能力并不是稳定不变的,会受到虚拟机数量的影响,vGPU在所有的虚拟机之间动态的分配图形处理资源.另外,我们发现当虚拟机数量只有一台时,所有游戏的FPS都不超过58,这表明在vGPU技术中使用了基于FPS感知的GPU调度算法,使得虚拟机共享GPU时都能公平的获得资源.

5.3 vGPU对云游戏网络负载的影响

在云游戏中,游戏服务器捕获游戏的画面,编码后发送给客户端,传输的游戏视频的数据量直接影响了在带宽受限情况下的用户体验.本实验在路由器上测量服务器端与客户端之间网络负载,分析使用vGPU进行硬件编码对数据传输量的影响.

图7反映了使用CPU编码和vGPU编码的网络负载情况,使用CPU编码时每秒传输的数据量在5~7Mbytes,使用vGPU编码时每秒传输的数据量在3.5Mbytes以下,这是因为vGPU使用了硬件编码,拥有更高的编码效率,编码同一个游戏画面产生的视频流数据量较小,对云游戏的带宽要求更小.同时,使用硬件编码将大量运算工作转移到GPU,可以降低CPU的使用率.

图6 不同虚拟机数量时游戏的FPSFig.6 FPS with various numbers of VMs

5.4 vGPU对云游戏用户体验的影响

本实验从画面质量和响应延迟两方面分析vGPU对云游戏用户体验的影响.实验分别在两台硬件配置相同的服务器上进行,一台服务器直接运行云游戏,一台服务器使用vGPU技术,在虚拟机中运行云游戏.我们选择三种游戏分别进行测试,用同一台客户端分别连接两个服务器获取游戏画面.

图7 云游戏网络负载Fig.7 Network load of cloud gaming

1)vGPU对云游戏画面质量的影响

实验将两个不同环境下的云游戏回传的游戏画面录制为YUV格式的视频文件,从每一个视频上截取相同的长度为40s的视频,计算出多组PSNR和SSIM数据,求取平均值,评估vGPU对云游戏画面质量的影响.

图8 游戏画面的PSNRFig.8 PSNRofgamescreen图9 游戏画面的SSIMFig.9 SSIMofgamescreen

图8和图9反映了不同环境下云游戏系统的PSNR和SSIM的值.观察这些数据可知,在真实物理环境下的画面质量比GPU虚拟环境下更好,PSNR和SSIM平均高了2dB和0.03.其次,从图8可以发现Batman的处理延迟最低,FEAR和DOW的处理延迟相对较高,而图10也反应了Batman的画面质量更高,FEAR和DOW的画面质量则相对较低,这表明游戏画面越复杂,经过云游戏系统处理后画面质量下降的越多.实验结果表明了GPU虚拟化技术导致的云游戏系统画面质量下降的幅度不大,大致与游戏画面复杂度不同导致的画面质量下降幅度相当,不会明显的影响游戏体验.

2)vGPU对云游戏响应延迟的影响

实验在两个不同环境下的云游戏中触发按键事件,通过观察游戏画面的改变测算出处理延迟和播放延迟,评估GPU虚拟化环境对响应延迟的影响.

图10 云游戏响应延迟Fig.10 Response delay of cloud gaming

图10反映了不同环境下云游戏系统平均的播放延迟和处理延迟.观察这些数据可知:播放延迟很小,最高只有21ms,且对于不同游戏延迟波动不大.这表明,解码器在解码视频时有较高且稳定的解码效率,受视频内容的影响不大.使用vGPU后,云游戏播放延迟没有增加,处理延迟比物理环境中平均提高了15ms.这表明vGPU会影响GPU的处理效率,增加少量的处理延迟.研究[16]表明,不同类别的游戏可以容忍的延迟程度不同,例如,对延迟最敏感的第一人称射击游戏要求延迟不能超过100毫秒.GamingAnywhere云游戏系统结合Citrix vGPU虚拟化技术,仍能将响应延迟控制在100ms以内,基本满足云游戏严格的延迟要求.

6 结束语

本文使用vGPU和GamingAnywhere搭建原型系统,将云游戏运行在虚拟化环境中,通过GPU共享的方式,一台服务器可以并发运行多个云游戏实例.在此基础上,设计并进行了大量实验,以分析GPU虚拟化对云游戏性能的影响.实验结果表明:使用vGPU技术共享GPU资源后,云游戏的响应延迟和画面质量略有下降,但基本满足云游戏的需求;在多个虚拟机中并发运行云游戏时能公平的分配到GPU资源;使用GPU对游戏画面进行硬件编码可以提高编码效率,降低CPU负载和网络负载.我们的工作可以作为设计基于GPU虚拟化的云游戏系统的重要依据.

[1] Mishra D,El Zarki M,Erbad A,et al.Clouds+ games:a multifaceted approach[J].IEEE Internet Computing,2014,18(3):20-27.

[2] Hong H J,Chen D Y,Huang C Y,et al.Placing virtual machines to optimize cloud gaming experience[J].IEEE Transactions on Cloud Computing,2015,3(1):42-53.

[3] Wu D,Xue Z,He J.iCloudAccess:cost-effective streaming of video games from the cloud with low latency[J].IEEE Transactions on Circuits and Systems for Video Technology,2014,24(8):1405-1416.

[4] Shea R,Liu J.On GPU pass-through performance for cloud gaming:experiments and analysis[C].Proceedings of IEEE 12th Annual Workshop on Network and Systems Support for Games(NetGames),2013:1-6.

[5] Dowty M,Sugerman J.GPU virtualization on VMware′s hosted I/O architecture[J].ACM SIGOPS Operating Systems Review,2009,43(3):73-82.

[6] Lee S,Kim H,Park D,et al.CPU-GPU hybrid computing for feature extraction from video stream[J].IEICE Electronics Express,2014,11(22):1-8.

[7] Scott S.The evolution of GPU accelerated computing[C].Proceedings of IEEE SC Companion:High Performance Computing,Networking Storage and Analysis,2012:1636-1672.

[8] Yang C T,Wang H Y,Ou W S,et al.On implementation of GPU virtualization using PCI pass-through[C].Proceedings of IEEE 4th International Conference on Cloud Computing Technology and Science(CloudCom),2012:711-716.

[9] Li T,Narayana V K,El-Araby E,et al.GPU resource sharing and virtualization on high performance computing systems[C].Proceedings of IEEE International Conference on Parallel Processing,2011:733-742.

[10] Duato J,Igual F D,Mayo R,et al.An efficient implementation of GPU virtualization in high performance clusters[C].Proceedings of European Conference on Parallel Processing,Springer Berlin Heidelberg,2009:385-394.

[11] Li J,Li C,Chen G,et al.vGPU:a real time GPU emulator:U.S,us8711159[P].2014-4-29.

[12] Huang C Y,Hsu C H,Chang Y C,et al.Gaming anywhere:an open cloud gaming system[C].Proceedings of the 4th ACM multimedia systems conference,2013:36-47.

[13] Carbone M,Rizzo L.Dummy net revisited[J].ACM SIGCOMM Computer Communication Review,2010,40(2):12-20.

[14] Hore A,Ziou D.Image quality metrics:PSNR vs.SSIM[C].Proceedings of IEEE International Conference on Pattern Recognition(icpr),2010:2366-2369.

[15] Dick M,Wellnitz O,Wolf L.Analysis of factors affecting players′ performance and perception in multiplayer games[C].Proceedings of ACM SIGCOMM Workshop on Network and System support for games,2005:1-7.

[16] Zander S,Leeder I,Armitage G.Achieving fairness in multiplayer network games through automated latency balancing[C].Proceedings of ACM SIGCHI International Conference on Advances in Computer Entertainment Technology,2005:117-124.

猜你喜欢

虚拟化客户端编码
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
生活中的编码
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
基于OpenStack虚拟化网络管理平台的设计与实现
Genome and healthcare
对基于Docker的虚拟化技术的几点探讨
新华社推出新版客户端 打造移动互联新闻旗舰
浅谈虚拟化工作原理