一种云游戏中的GPU虚拟化资源自适应调度系统Word文件下载.docx
《一种云游戏中的GPU虚拟化资源自适应调度系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《一种云游戏中的GPU虚拟化资源自适应调度系统Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
具体说,基于公平性的QoS自适应调度算法不仅保证每个虚拟机都满足QoS的基本要求,而且对GPU资源进行再分配,把具有较高FPS的虚拟机的GPU资源分配给那些不满足QoS要求的虚拟机,因此基于公平性的QoS自适应调度算法不仅满足QoS要求,更实现了公平调度并显著提高GPU利用率。
通过以下技术方案实现的,本发明包括:
(1)基于半虚拟化的系统架构
(2)自适应调度算法。
其中:
基于半虚拟化的系统架构是一种基于宿主机库植入技术的轻量级调度器,对于宿主机的图像API、客户机的操作系统和应用程序无需修改;
其中基于公平性的QoS自适应调度算法满足云游戏用户体验的最小FPS和最大延迟,并强调资源调度的公平性。
说明书
技术领域
本课题涉及的是GPU虚拟化领域中的资源自适应调度方法,应用于云游戏平台,具体是一种在操作系统图像应用程序编程接口中进行干预的调度方法。
背景技术
GPU虚拟化技术的逐渐成熟促进了云游戏应用的发展,因此云服务中的云游戏应用时兴。
但是由于目前默认的GPU资源共享机制性能不良,使得云游戏的用户体验不可避免地被一些实时不确定因素破坏,比如渲染复杂的游戏场景。
在视频流质量分析中,FPS(FramesPerSecond)的定义为每秒传输帧数,测量用于保存、显示动态视频的信息数量,即动画或视频的画面数。
在云游戏用户体验中,QoS要求指的是保证用户正常使用的最小FPS和最大延迟。
影响虚拟环境中游戏运行的主要因素:
CPU运行时间、GPU执行游戏同步渲染时间、不可预测的游戏场景变化和虚拟机之间的干预。
这些因素导致游戏的FPS不符合QoS要求,影响用户体验。
目前存在的虚拟化解决方案,其资源共享机制性能不良,主要体现在资源利用率低下以及不符合服务等级协议(QoS)要求。
现在大部分的虚拟机中的资源调度机制采用先进先出方式,导致一些虚拟机不符合QoS要求,并且在单一的服务器上运行多个虚拟机会给各虚拟机中的游戏应用带来性能波动,特别是在云游戏平台上更为明显。
经过对现有技术的检索发现,美国卡耐基梅隆大学在GPU加速窗口系统中提出了该难题。
IBM东京研究院开发了资源自动调度系统来加速通用GPU集群中stencil应用的运行。
北卡罗来纳州大学教堂山分校提出了两种方法,把GPU集成到软实时多处理器系统中来提高整体系统的性能。
纽约州大学石溪分校提出了GERM,旨在提供了一种公平的GPU资源分配方法,并且还使用例如垂直同步的固定帧率方法来避免游戏过分依赖硬件资源。
但是它们都有如下不足,GERM没有考虑QoS要求并且固定帧率方法不能有效地使用硬件资源。
TimeGraph不能保证在所有的虚拟机符合QoS要求,尤其是在重要负载更少的时候。
发明内容
针对现有的GPU资源调度方法存在的不足,提出了一种云游戏GPU虚拟资源自适应调度方法,通过运用GPU半虚拟化和库注入技术,在宿主机上植入轻量级的调度控制,采用了无需更改宿主机的图像驱动、客户机操作系统和应用的绿色软件技术。
调度方法减轻了实时不确定因素的影响,并保证了系统资源的高利用率。
具体说,基于公平性的QoS自适应调度方法不仅保证每个虚拟机都满足QoS的基本要求,而且对GPU资源进行再分配,把具有较高FPS的虚拟机的GPU资源分配给那些不满足QoS要求的虚拟机,因此基于公平性的QoS自适应调度方法不仅满足QoS要求,更实现了公平调度并显著提高GPU利用率。
本发明是通过以下技术方案实现的,本发明包括:
(1)基于半虚拟化的系统架构
(2)自适应调度方法。
基于半虚拟化的系统架构是一种基于宿主机库植入技术的轻量级调度器,对于宿主机的图像应用程序编程接口、客户机的操作系统和应用程序无需修改;
其中基于公平性的QoS自适应调度方法满足云游戏用户体验的最小FPS和最大延迟,并强调资源调度的公平性。
如图1所示,上面为现有的系统架构,下面是本发明改进的系统架构,灰色部分为本发明的内容,其余为已有架构。
系统架构的模块全部部署在宿主机中,它介于GPU和宿主机GPU应用程序编程接口之间,由调度器、监测器、虚拟机列表、调度控制器和图像应用程序编程接口分析器组成。
调度控制器负责其他各个子模块之间信息的沟通。
比如调度控制器从虚拟机列表中获得所有运行的虚拟机的信息,尤其是虚拟机中GPU资源的需求和运行的游戏FPS信息,发送至需要的子模块比如图像应用程序编程接口分析器或者代理(调度器和监测器组成)。
调度控制器还有一个功能就是会自动调节已设定调度方法的参数来使得调度方法良好地运行。
每一个运行的虚拟机都有一个由调度器和监测器组成的代理。
监测器从调度控制器那里获得虚拟机的运行实时信息并把它发送至调度器,调度器接受来自驱动的命令并调用GPU计算任务。
代理(调度器和监测器组成)通常也和调度控制器一起决定需要将多少GPU资源分配给虚拟机。
图像应用程序编程接口分析器预测GPU命令运行带来的开销,这些GPU命令是由图像应用程序编程接口产生的,比如渲染画面函数命令。
图像应用程序编程接口分析器将预测得到的GPU命令运行开销发送至调度控制器从而可以被需要该信息的其他子模块获得。
虚拟机列表纪录了包括所有的系统中正在运行的虚拟机,每一个虚拟机都能被系统索引,当有新的虚拟机加入并开始运行时,系统就会自动把它加入虚拟机列表中并再次重新调度GPU资源。
这里所述的基于半虚拟化的系统架构采用II型虚拟化。
整个架构时刻监听并拦截由GPU命令分发器发送的来自上层的函数调用,经过图中灰色部分处理后再压入下层的主机GPU驱动处理。
具体来说,就是当客户机应用唤醒标准GPU渲染应用程序编程接口时,客户机GPU计算库在主存中准备了相应的GPU缓存并发布GPU命令包,这些包被压入虚拟GPUI/O队列中,最后进入GPU命令分发器等待被分发,但此时本发明的架构会拦截来自GPU命令分发器的命令并最终依次被宿主机处理,处理完调度后继续将命令向下分发,以异步的形式发送至宿主机驱动。
如图2所示,本方法中帧延迟的定义:
将相邻两次渲染画面函数返回值之间的时间差定义为帧延迟。
每个帧由GPU渲染、渲染画面函数、睡眠函数、目标计算和图像绘画四部分组成,由于GPU渲染、目标计算和图像绘画的变化,不同帧的长度因此而相异。
如图4方法的伪代码所示,本方法在于调整帧的组成之一睡眠函数的时间来稳定每个帧的大小,最终使得各个帧维持在一个相近的水平。
具体来说,基于公平性的QoS自适应调度方法分为两个方面,分别是调度自适应性的实现和调度公平性的实现。
方法程序的逻辑流程图如图3所示。
自适应调度部分的实现:
1、首先用户在调度控制器里设置好系统欲达到的FPS(每秒帧数),虚拟机列表详细记录了虚拟机运行的实时信息,调度控制器负责接收来自虚拟机列表的虚拟机运行信息。
2、图像应用程序编程接口分析器计算GPU命令(比如渲染画面函数命令)运行带来的开销并发送至调度控制器。
3、监测器从调度控制器那里获得了虚拟机的运行实时信息和GPU命令开销,并把它们一同发送至调度器。
一方面,调度器从上层接受到来自驱动的命令并即将调用GPU计算任务(接下来的步骤依虚拟机中的实际游戏FPS而定),在此结合获得的虚拟机运行信息和GPU命令开销计算得出睡眠函数的运行时间,若信息显示FPS大于30则在调用渲染画面函数前插入睡眠函数,从而达到扩展延迟帧的目的,最后调用渲染画面函数渲染画面。
若小于30则调度器为系统分配更多的GPU资源,然后调用渲染画面函数渲染画面。
若等于30则直接调用渲染画面函数渲染画面。
虚拟机运行时渲染画面函数调用的计算时间是非常稳定的,即使发生波动也是逐渐平缓变化的,因此我们认为每个虚拟机的代理可以通过各自虚拟机的历史信息来预测渲染画面函数的计算量,本方法采用过去连续的20次渲染画面函数调用时间的算术平均值作为下一帧的预测。
为了使得各个虚拟机的帧长度平缓稳定在设定的值FPS,通过延迟它的上一次渲染画面函数调用,来扩展每个帧。
而延迟的效果通过在每次渲染画面函数调用前插入睡眠函数调用达到,睡眠函数的量由公式给出。
我们发现当存在大量GPU资源竞争时,渲染画面函数的时间量会发生明显变化,我们则通过在睡眠函数调用前插入刷新函数命令来得到更精确的GPU计算时间。
公平性的实现:
1、基于公平性的QoS自适应调度方法会维持一个虚拟机列表,虚拟机列表详细记录当前运行的虚拟机对GPU资源占有情况和各个虚拟机运行游戏的FPS。
3、图像应用程序编程接口分析器实时分析虚拟机中游戏运行图像信息以计算其FPS,并预测运行开销。
4、调度控制器一方面通过图像应用程序编程接口分析器来把游戏运行的图像信息如FPS等情况写入虚拟机列表,另一方面通过虚拟机列表的虚拟机运行信息来决定释放那些拥有过高FPS的虚拟机的GPU资源,并把它们再分配给低于QoS标准的虚拟机。
5、调度器负责实现4中提到的GPU资源释放和再分配,一方面通过插入睡眠函数延迟帧长度来释放GPU资源,另一方面把由于插入睡眠函数而得到的空闲GPU资源分配给那些低于Qos的虚拟机。
6、上述的释放与再分配的过程中,拥有过高FPS的虚拟机等比例承担GPU资源的再分配部分。
拥有最多GPU资源的虚拟机占据GPU利用率的首位,因此这种GPU资源的再分配方法是相对公平的。
这里简单对本发明的一个实例做出阐述。
假设标准FPS是30,系统上一共运行了3个虚拟机V1、V2、V3,我们假设历史GPU使用和FPS的比率分别是t1、t2、t3。
如果一开始V1运行在20FPS,V2运行在40FPS,V3运行在60FPS,那么首先调度控制器模块接收到来自监测器传送的性能参数,一旦它探测到V1没有满足QoS要求,基于公平性的QoS自适应调度方法开始工作,首先计算出应该再分配给V1的GPU资源,10t1。
其他两个虚拟机V2、V3分别要准备释放5t1的资源
附图说明
图1现有系统架构与改进的系统架构
图2帧的组成与帧延迟
图3方法程序逻辑
图4控制系统不同参数对性能的影响
图5两个虚拟机之间的GPU资源再分配
图6基于公平性的QoS自适应调度方法性能评估结果
具体实施方式
下面对本发明的实施例作详细说明,本实施例在本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,本发明的适用平台不限于下述的实施例。
本实施例的具体操作平台是i7-2600K3.4GHz的CPU,16GBRAM,AMDHD6750显卡和2GB的视频内存,宿主操作系统和子操作系统都采用Windows7x64,VMware的版本是4.0,每一个宿主操作系统都是双核的并且拥有2GB的RAM,屏幕分辨率是1280*720(高清品质),为了简化性能比较,本实施例禁用了宿主机上的对换空间、GPU加速窗口系统。
本实施例采用两种类型的负载,第一种是“理想模型游戏”,另一种是“现实模型游戏”,三个游戏代号分别为A、B、C。
首先我们测试并评估了使用PI控制的控制系统的作用,如图4显示了控制系统分别在kp=0.5,kp=0