一种基于最高负载的进行负载均衡调度的方法及设备的制作方法

文档序号:6399142阅读:144来源:国知局
专利名称:一种基于最高负载的进行负载均衡调度的方法及设备的制作方法
技术领域
本发明涉及计算机负载处理技术,尤其涉及一种基于最高负载的进行负载均衡调度的方法及设备。
背景技术
为了提高硬件资源利用率,往往在一个物理平台上运行数目较多的虚拟机(Virtual Machine),各虚拟机共享物理处理器(例如可以表示为PCPU)的硬件资源。为了各个虚拟机公平得到物理处理器的使用时间,虚拟机调度器一般采用分时共享策略,以虚拟处理器(例如可以表示为VCPU)为调度单位,负责从队列中选择合适的虚拟处理器执行。Credit调度算法是著名开源虚拟化软件Xen3.0版本及以后版本使用的默认调度算法,是一种按比例公平共享的非抢占式调度算法。Credit调度算法为每一个虚拟机设置二元组(weight, cap),各个虚拟机之间weight的比例决定它们的credit值,credit值直接影响每个VCPU的运行时间。对Credit算法的研究主要集中在该算法对系统性能影响方面。Credit调度算法的最大优点在于可以全局管理多个PCPU从而将CPU时间公平高效地分配给各个VCPU,还可以用多对称处理(Symmetric Mult1-Processing, SMP)的方式将各个PCPU的资源分配给多个VCPU,实现负载平衡,还它可以通过调节虚拟机的cap参数很好的实现非工作保持(Non-Working-Conserving, NWC)调度模式,使得管理员可以很容易地控制PCPU的分配情况。Credit调度算法的缺点在于不能保证实时性,响应速度要求较高的应用中事件响应延迟与其所处的队列位置密切相关,响应延迟普遍较长且波动明显,这个问题已经Xen3.0.4版本中加入boost优先级的方式解决。

发明内容
本发明要解决的技术问题是提供一种基于最高负载的进行负载均衡调度的方法及设备,为提高虚拟机平台的资源管理效率提供新的解决方案。为了解决上述技术问题,本发明提供了一种基于最高负载的进行负载均衡调度的方法,包括:虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。进一步地,上述方法还可以具有以下特点:所述虚拟处理器的属性中包括是否能够调配一项;所述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,执行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。进一步地,上述方法还可以具有以下特点:所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。进一步地,上述方法还可以具有以下特点:所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。进一步地,上述方法还可以具有以下特点:虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;所述虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。为了解决上述技术问题,本发明还提供了一种基于最高负载的进行负载均衡调度的设备,所述设备包括虚拟机调度器和一个以上物理处理器;所述虚拟机调度器,用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。进一步地,上述设备还可以具有以下特点:所述虚拟处理器的属性中包括是否能够调配一项;所述虚拟机调度器,还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。进一步地,上述设备还可以具有以下特点:所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。进一步地,上述设备还可以具有以下特点:所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。进一步地,上述设备还可以具有以下特点:虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;所述虚拟机调度器,还用于按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。本发明的负载均衡调度方案可以优先VCPU的迁移,提高提高虚拟机平台的资源管理效率,提高资源利用率。


图1是基于最高负载的进行负载均衡调度的方法的流程图;图2是基于最高负载的进行负载均衡调度的设备的结构图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。本发明中为每个物理处理器设置一调度队列,队列中包括一个或多个虚拟处理器。为每个虚拟处理器设置一调度值,此调度值与虚拟处理器获得的物理处理器的时间片的值是正相关关系。虚拟处理器的调度值载大,当前为虚拟处理器分配的时间片越多。每次虚拟处理器调度之后,其调度值发生变化。物理处理器的负载值是物理处理器的调度队列中所有虚拟处理器的调度值的和。如果一物理处理器的调度队列中所有的虚拟处理器的调度值均为零则表示此物理处理器当前空闲,负载值为0,其它物理处理器的负载值不为零,则表明当前系统的负载不均衡。如图1所示,基于最高负载的进行负载均衡调度的方法包括:虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。虚拟机调度器为每个虚拟机分配W、c 二元数组,用户可以手动修改二元数组的值。根据VM (w,c)值为虚拟机处理器分配调度值T,w控制相对获得量,c控制上线值。。虚拟处理器的属性中还可以包括是否能够调配一项;例如为每个VCPU设置一个标志位cpu_flag可以控制VCPU只能运行在哪个PCPU上,可以根据具体应用和用户需求有关进行设置用于限制VCPU的迁移,一般情况下默认为不做此限制。虚拟处理器的属性中包括此项时,上述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,执行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。当一物理处理器的负载值为零并触发均衡操作后的具体实现中,可以(I)首先复制一份临时物理处理器列表,(2 )检测列表中物理处理器的负载值,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器,(3)如果选到能够调配的虚拟处理器,则将此虚拟处理器调度到负载值为O的物理处理器中;否则,从临时列表中删除当前物理处理器,重新返回步骤(2),以此循环,直至选择到能够调配的虚拟处理器。虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。在物理处理器的调度队列中,处于工作状态的虚拟处理器排在调度队列的前半部分,处于非工作状态的虚拟处理器排在调度队列的后半部分。将新的虚拟处理器插入调度队列的规则是:将处于工作状态的虚拟处理器放入调度队列中与此新的虚拟处理器同级别的虚拟处理器的后面,将处于非工作状态的虚拟处理器放入调度队列的末尾。例如:例如可以遍历调度队列中处于工作状态的虚拟处理器并将其插入到最后一个虚拟处理器的后面。随着任务的执行,某一虚拟处理器的调度值耗完,即此虚拟处理器转为非工作状态,则将此虚拟处理器放入调度队列的末尾。具体实施例当前系统中共有4个物理处理器:PCPU1、PCPU2、PCPU3、PCPU4。当前PCPUl的调度队列中已无处于工作状态的VCPU,即PCPUl的调度队列中各VCPU的调度值都消耗完毕均为非工作状态。虚拟机调度器检测到PCPUl的负载值为O后,触发负载均衡的处理过程,查看其他PCPU的负载情况,其中,PCPU2调度队列包括VCPU21 (100)、VCPU22 (50)、VCPU23 (50)、VCPU24 (O)。PCPU3 调度队列有 VCPU31 (50)、VCPU32 (50)、VCPU33 (O)、VCPU34 (O)。PCPU4 调度队列有VCPU41 (100)、VCPU42(0)、VCPU43(0)、VCPU44(0)。括号内为相应虚拟处理机的调度值。按照本发明的方法,选择负载最大的PCPU即PCPU2中的调度值最大的VCPU即VCPU21,并将其迁入到PCPUl的调度队列中的最前端位置,这样PCPUl的调度队列中包含一个调度值为100的VCPU,经过相同的时间片后,四个PCPU可以同时将各自调度队列中调度值消耗完毕。如果未使用本发明的方法,例如未在负载均衡时选择最大负载的PCPU上的VCPU,例如选择了 PCPU3中的VCPU31(50)并将其迁移到PCPUl的调度队列中,经过相同的时间片,各PCPU消耗了 50个调度值后,PCPUl和PCPU3的负载均为O。此时再次需要进行负载均衡。这样不仅增加了 VCPU的迁移次数,还给系统带来一些不必要的资源消耗。所以执行负载均衡时,如果选择负载较小的PCPU并在此PCPU上选择VCPU,会造成负载较小的PCI3U很快没有可运行的VCPU,再次触发负载均衡,引发当前系统对其他PCPU调度队列VCPU的遍历、选择、迁移等动作的发生,消耗系统资源。如图2所示,基于最高负载的进行负载均衡调度的设备包括虚拟机调度器和一个以上物理处理器。虚拟机调度器用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。
虚拟处理器的属性中包括是否能够调配一项时,虚拟机调度器还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;虚拟机调度器还用于按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。综上所述,本方法可尽量减少虚拟化平台上负载均衡时VCPU迁移次数,减少不必要资源消耗,把资源更多的使用在实际的计算功能上。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
权利要求
1.一种基于最高负载的进行负载均衡调度的方法,其特征在于, 虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。
2.如权利要求1所述的方法,其特征在于, 所述虚拟处理器的属性中包括是否能够调配一项; 所述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,执行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。
3.如权利要求1或2所述的方法,其特征在于, 所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。
4.如权利要求1或2所述的方法,其特征在于, 所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。
5.如权利要求1或2所述的`方法,其特征在于, 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别; 所述虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。
6.一种基于最高负载的进行负载均衡调度的设备,其特征在于, 所述设备包括虚拟机调度器和一个以上物理处理器; 所述虚拟机调度器,用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。
7.如权利要求6所述的设备,其特征在于, 所述虚拟处理器的属性中包括是否能够调配一项; 所述虚拟机调度器,还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。
8.如权利要求6或7所述的设备,其特征在于, 所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。
9.如 权利要求6或7所述的设备,其特征在于, 所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。
10.如权利要求6或7所述的设备,其特征在于, 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别; 所述虚拟机调度器,还用于按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。
全文摘要
本发明公开了一种基于最高负载的进行负载均衡调度的方法及设备,虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。本发明的负载均衡调度方案可以优先VCPU的迁移,提高提高虚拟机平台的资源管理效率,提高资源利用率。
文档编号G06F9/48GK103106112SQ20131004597
公开日2013年5月15日 申请日期2013年2月5日 优先权日2013年2月5日
发明者常建忠 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1