基于服务质量的虚拟机资源调度方法技术

技术编号:7758938 阅读:126 留言:0更新日期:2012-09-14 00:39
本发明专利技术公开了一种虚拟机资源调度方法,包括(1)初始化(2)获取虚拟机中当前虚拟处理器的属性,并根据获取的属性判断虚拟处理器的状态(3)对额外队列中的虚拟处理器进行处理;(4)对普通队列中的虚拟处理器进行处理;(5)更新普通队列;(6)从普通队列中选择虚拟处理器运行;(7)判断物理处理器空闲时间是否大于等于阈值,如果小于该阈值,则运行空闲进程,否则进一步判断高优先级额外队列是否为空,如果不为空,选择队首的虚拟处理器;如果为空,判断低优先级额外队列是否为空,如果不为空,选择队首的虚拟处理器;如果为空,运行空闲进程。本发明专利技术可以在复杂应用环境中,使得虚拟机上的I/O响应延迟可控,支持多处理器间的负载均衡。

【技术实现步骤摘要】

本专利技术涉及虚拟化中的虚拟机调度
,具体涉及一种虚拟机资源调度方法。
技术介绍
x86处理器的广泛应用和规模的迅速膨胀带来一些基础架构的难题计算机资源的利用率过低;基础物理设施的成本日益增大;IT资源管理、维护的成本不断攀升。虚拟化技术的应用有效提升了硬件设备的利用效率,进而极大的降低了计算资源的成本与开销。当多个虚拟机系统共享使用底层硬件时,资源的调度必须满足公平和高效的原贝U。目前,虚拟化平台的硬件资源管理与分配方法依赖于调度器,对不同应用和负载,各调 度器不能较好的进行匹配和调度,如何合理、有效地分配硬件资源仍是一个很大的难题。常见的虚拟机调度方法有虚拟时间借用、最早截止时间优先和基于信用值的调度方法。虚拟时间借用方法将虚拟时间思想引入进程调度当中,将时间分为真实时间和虚拟时间。其中,真实时间为硬件计时器显示的时间值;虚拟时间为对实际时间经过某种规则计算后得到的时间值,该方法用虚拟时间来监控进程的执行,每次总是调度具有最早的有效虚拟时间的进程。当前,虚拟时间借用方法存在着在多处理器上运行时不能保证进程公平共享处理器资源的问题。基于信用值调度方法为每一个客户机操作系统设置二元组(weight, cap) ,weight表示权重,cap表示上限。客户机操作系统之间权重的比例决定他们各自占用处理器时间片的比例;而上限决定一个客户机操作系统占用处理器时间的最大值,比如cap = 50,表示客户机操作系统最多只能占用半个物理处理器的所有时间,cap = 100,表示客户机操作系统最多可以占用一个物理处理器的所有时间。基于信用值的方法将各个虚拟处理器分为两个队列,under队列和over队列,它只调度under队列中的虚拟处理器。最开始所有的虚拟处理器都在under队列,每个虚拟处理器的初始信用值为其对应的权重值,每当虚拟处理器被调度时,这个虚拟处理器对应的信用值就被减小,当信用值为负时,这个虚拟处理器就被放入over队列,当所有的虚拟处理器都在over队列中时,信用值调度方法按比例为所有的虚拟处理器加上最初的权重的值,并将对应的虚拟处理器放入到under队列中,周而复始。基于信用值方法的优点它可以将处理器时间公平高效地分配给各个虚拟处理器,并可以实现负载均衡;基于信用值方法的缺点在响应速度要求较高的应用中,时间响应延迟与其所处的队列位置密切相关,响应延迟普遍较长且波动明显。最早截止时间优先方法为每个虚拟处理器设定一个截止期限作为其被调度时的参考因素。当进行调度时,调度程序将优先调度截止期限最早的虚拟处理器。这种方式可以通过配置各个虚拟处理器的参数调整他们的优先级,并且对I/o密集型应用的调度要优于其他两个调度方法;但是其只能对每个物理处理器分别进行最早截止时间优先方法的调度,当有多个物理处理器在同一台机器上时,该方法不能较好的完成负载均衡,当系统过载时,其吞吐量将会急剧下降。
技术实现思路
本专利技术目的在于实现一种多核架构下的,通过任务的合理分配,满足多核环境负载均衡的特性,降低I/O请求的响应时间,满足服务质量控制的需求。为了达到上述目的,本专利技术采用的技术方案为一种,用于对虚拟机中虚拟处理器进行调度,具体包括以下步骤⑴初始化 首先,为每个虚拟处理器设置一个三元组(slice, period, extra),其中,参数slice, period指的是在period时间周期内,虚拟处理器至少运行slice时长(单位毫秒),extra为标识位,当extra为I时,表示如果在period时间周期内,物理处理器仍然有空闲时间,允许虚拟处理器占用这些空闲时间,当extra为O时,则不允许虚拟处理器占用这些空闲时间。然后,在每个物理处理器设置普通队列和额外队列,其中,普通队列中的元素为物理处理器中的所有虚拟处理器,额外队列的元素为其三元组参数extra为I的虚拟处理器,其中该额外队列为两个,即低优先级额外队列和高优先级额外队列,低优先级额外队列指其元素为位于客户域(domainU)中的虚拟处理器的额外队列,高优先级额外队列指其元素为位于管理域(domainO)中的虚拟处理器的额外队列。(2)获取当前虚拟处理器的相关信息,根据这些信息判断是否为空进程,如果不为空进程的话,判断是否是可运行状态,如果是可运行状态,并根据是否是在额外时间运行的进行下一步处理,如果是在额外时间运行的,跳转到步骤(2),否则跳转到步骤(3)。(3)首先获取在哪个额外队列,将状态位中的所有运行标志都清除,统计额外运行的时间和从上次进行负载均衡到当前时刻运行的总时间(根据这个变量来判断虚拟处理器的繁忙程度,作为负载均衡的指标)。从额外队列中删除当前虚拟处理器。如果当前虚拟处理器在高优先级额外队列中,重置所有信息,然后检查更新额外队列的信息;如果当前虚拟处理器在低优先级额外队列中,重新计算score的值。检查更新额外队列信息时,当前虚拟处理器如果处于可运行状态,就将其加入到额外队列并更新其他虚拟处理器的score的值。否则从所有队列中删除此虚拟处理器。更新score的值时,根据当前虚拟处理器上次的score值进行更新,其他虚拟处理器的score均减去当前虚拟处理器的score值,目的是为了提高其他虚拟处理器的优先级。(4)统计虚拟处理器从上次进行负载均衡到当前时刻运行的总时间(用于负载均衡繁忙因子设置),如果当前虚拟处理器的时间片还没有用完并且仍然处于可运行状态,跳转到步骤(4)。否则将当前虚拟处理器从普通队列中删除,判断当前虚拟处理器是否处于可运行状态,如果处于可运行状态,将其插入到等待队列中,否则,将其从额外队列中删除。(5)遍历等待队列和运行队列,根据虚拟处理器的周期开始的时间,将虚拟处理器放入到不同的队列,周期已经开始,放入到运行队列中,周期还没有开始,则放入到等待队列中。如果已经错过了截止期限,则增加一个周期,并根据周期是否已经开始,将其放入到等待队列或者运行队列。(6)从运行队列或者等待队列中选择一个虚拟处理器。如果运行队列中有虚拟处理器,则选择处于队列头部的虚拟处理器放入到物理处理器上执行,能够执行的时间计算方式如下ret. time = MIN(now+slice_cputime, PERIOD_BEGIN(waitq))-now (I)ret. time为虚拟处理器本次执行能够占用物理处理器的时间;now为当前时间 ;MIN()为获取最小值;slice为虚拟处理器分配的时间片;cputime为在当前周期内已经运行的时间;PERIOD_BEGIN(waitq)为等待队列中周期最早开始的时间。如果运行队列为空,而等待队列不空,则查询其他物理处理器的运行队列是否有虚拟处理器,如果有,迁移到当前物理处理器并执行;如果没有,跳转到(6);如果等待队列也为空,则查询其他物理处理器的等待队列是否有虚拟处理器,如果有,迁移到当前物理处理器并执行;如果没有,则执行空进程。(6)如果物理处理器空闲时间小于500毫秒,直接运行空进程,否则从额外队列中选择一个虚拟处理器来执行。(7)结束。在调度运行一段时间之后,可能会出现各个物理处理器上队列负载不均衡的情况,可以进行全局的负载均衡处理。其中全局负载均衡由定时器来控制,具体可分为以下几个步骤(本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:冯丹童薇刘景宁张文涛王晓静陈慧萍
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1