论文部分内容阅读
云游戏是一种将游戏在云端的图形处理器(Graphic ProcessingUnit,简称GPU)进行图像渲染,并通过网络将图像传输到客户端的技术。随着GPU虚拟化技术的发展与成熟,云游戏得以快速普及,现在已经涌现出越来越多的云游戏服务提供商。然而,目前在云游戏数据中心,多个虚拟机之间共享GPU资源仍旧存在着巨大的挑战。首先,云游戏服务提供商一般为每一个云游戏提供单独的GPU,因此往往会造成GPU资源的严重浪费。其次,由于缺乏虚拟化环境下GPU资源高效的共享机制,如果在一个GPU上同时运行多个游戏,那么每个游戏的服务等级协议(Service LevelAgreement,简称SLA)是不能被保证的。此外,云游戏还容易受到运行时的不确定因素的干扰,增大了在云游戏之间进行GPU资源调度的难度。针对上述三个挑战,本文提出了一个在虚拟化环境下,能够高效调度云游戏GPU资源的轻量级框架。同时,为了验证框架的有效性和实用性,在框架上实现了三个基于反馈控制的自适应调度算法。框架利用了应用程序编程接口(Application Programming Interface,简称API)拦截技术,截获了客户操作系统对宿主操作系统申请GPU资源的请求,并通过调度器为虚拟机调度GPU资源。API拦截技术使得运用本框架时,不必修改客户和宿主操作系统、GPU驱动程序以及虚拟机监控器。框架能够提供一组API,以支持在框架中实现不同的调度算法。本文利用框架的API,在这个框架上实现了三个自适应调度算法。这三个算法各自有着不同的设计目标。它们分别是SLA感知(SLA-aware,简称SA)算法、公平SLA感知(Fair SLA-aware,简称FSA)算法和强化SLA感知(Enhanced SLA-aware,简称ESA)算法。由于在实现中运用了反馈控制的相关方法,这三个调度算法能够有效地消除云游戏运行时的不确定因素,并在保证云游戏SLA的同时最大化地利用了GPU资源。实验表明,本框架适用于真实的云游戏场景。在运行多个真实模型游戏的服务器上,框架中的三个算法都有效地在各个云游戏之间进行GPU资源的调度,且效果符合各自的设计目标。而框架和算法本身所带来的性能开销维持在5%至12%之间。