《一种基于最高负载的进行负载均衡调度的方法及设备.pdf》由会员分享,可在线阅读,更多相关《一种基于最高负载的进行负载均衡调度的方法及设备.pdf(9页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103106112 A(43)申请公布日 2013.05.15CN103106112A*CN103106112A*(21)申请号 201310045971.3(22)申请日 2013.02.05G06F 9/48(2006.01)G06F 9/50(2006.01)G06F 9/455(2006.01)(71)申请人浪潮(北京)电子信息产业有限公司地址 100085 北京市海淀区上地信息路2号2-1号C栋1层(72)发明人常建忠(74)专利代理机构北京安信方达知识产权代理有限公司 11262代理人栗若木 曲鹏(54) 发明名称一种基于最高负载的进行负载均衡调度的方法及。
2、设备(57) 摘要本发明公开了一种基于最高负载的进行负载均衡调度的方法及设备,虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。本发明的负载均衡调度方案可以优先VCPU的迁移,提高提高虚拟机平台的资源管理效率,提高资源利用率。(51)Int.Cl.权利要求书2页 说明书5页 附图1页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书5页 附图1页(10)申请公布号 CN 1031061。
3、12 ACN 103106112 A1/2页21.一种基于最高负载的进行负载均衡调度的方法,其特征在于,虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。2.如权利要求1所述的方法,其特征在于,所述虚拟处理器的属性中包括是否能够调配一项;所述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;。
4、判断此虚拟处理器的属性为不能够调配时,执行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。3.如权利要求1或2所述的方法,其特征在于,所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。4.如权利要求1或2所述的方法,其特征在于,所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。5.如权利要求1或2所述的方。
5、法,其特征在于,虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;所述虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。6.一种基于最高负载的进行负载均衡调度的设备,其特征在于,所述设备包括虚拟机调度器和一个以上物理处理器;所述虚拟机调度器,用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到。
6、此负载值为零的物理处理器的调度队列中。7.如权利要求6所述的设备,其特征在于,所述虚拟处理器的属性中包括是否能够调配一项;所述虚拟机调度器,还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最权 利 要 求 书CN 103106112 A2/2页3大的物理处理器并且其调度队列中调度值最。
7、大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。8.如权利要求6或7所述的设备,其特征在于,所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。9.如权利要求6或7所述的设备,其特征在于,所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。10.如权利要求6或7所述的设备,其特征在于,虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;所述虚拟机调度器,还用于按照虚拟机。
8、的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。权 利 要 求 书CN 103106112 A1/5页4一种基于最高负载的进行负载均衡调度的方法及设备技术领域0001 本发明涉及计算机负载处理技术,尤其涉及一种基于最高负载的进行负载均衡调度的方法及设备。背景技术0002 为了提高硬件资源利用率,往往在一个物理平台上运行数目较多的虚拟机(Virtual Machine),各虚拟机共享物理处理器(例如可以表示为PCPU)的硬件资源。为了各个虚拟机公平得到物理处理器的使用时间,虚拟机调度器一般采用分时共享策略,以虚拟处理器(例如可以表示为VCPU)为调度单位,负责从队列中选择合适的。
9、虚拟处理器执行。0003 Credit调度算法是著名开源虚拟化软件Xen3.0版本及以后版本使用的默认调度算法,是一种按比例公平共享的非抢占式调度算法。Credit调度算法为每一个虚拟机设置二元组(weight,cap),各个虚拟机之间weight的比例决定它们的credit值,credit值直接影响每个VCPU的运行时间。对Credit算法的研究主要集中在该算法对系统性能影响方面。0004 Credit调度算法的最大优点在于可以全局管理多个PCPU从而将CPU时间公平高效地分配给各个VCPU,还可以用多对称处理(Symmetric Multi-Processing,SMP)的方式将各个PCP。
10、U的资源分配给多个VCPU,实现负载平衡,还它可以通过调节虚拟机的cap参数很好的实现非工作保持(Non-Working-Conserving,NWC)调度模式,使得管理员可以很容易地控制PCPU的分配情况。Credit调度算法的缺点在于不能保证实时性,响应速度要求较高的应用中事件响应延迟与其所处的队列位置密切相关,响应延迟普遍较长且波动明显,这个问题已经Xen3.0.4版本中加入boost优先级的方式解决。发明内容0005 本发明要解决的技术问题是提供一种基于最高负载的进行负载均衡调度的方法及设备,为提高虚拟机平台的资源管理效率提供新的解决方案。0006 为了解决上述技术问题,本发明提供了一。
11、种基于最高负载的进行负载均衡调度的方法,包括:虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。0007 进一步地,上述方法还可以具有以下特点:0008 所述虚拟处理器的属性中包括是否能够调配一项;所述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,执。
12、行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作说 明 书CN 103106112 A2/5页5为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。0009 进一步地,上述方法还可以具有以下特点:0010 所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。0011 进一步地,上述方法还可以具有以下特点:0012 所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相。
13、关关系。0013 进一步地,上述方法还可以具有以下特点:0014 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;0015 所述虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。0016 为了解决上述技术问题,本发明还提供了一种基于最高负载的进行负载均衡调度的设备,所述设备包括虚拟机调度器和一个以上物理处理器;0017 所述虚拟机调度器,用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理。
14、器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。0018 进一步地,上述设备还可以具有以下特点:0019 所述虚拟处理器的属性中包括是否能够调配一项;所述虚拟机调度器,还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的。
15、其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。0020 进一步地,上述设备还可以具有以下特点:0021 所述物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。0022 进一步地,上述设备还可以具有以下特点:0023 所述虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。0024 进一步地,上述设备还可以具有以下特点:0025 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;。
16、处于工作状态的虚拟处理器的级别高于说 明 书CN 103106112 A3/5页6处于非工作状态的虚拟处理器的级别;0026 所述虚拟机调度器,还用于按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。0027 本发明的负载均衡调度方案可以优先VCPU的迁移,提高提高虚拟机平台的资源管理效率,提高资源利用率。附图说明0028 图1是基于最高负载的进行负载均衡调度的方法的流程图;0029 图2是基于最高负载的进行负载均衡调度的设备的结构图。具体实施方式0030 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲。
17、突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。0031 本发明中为每个物理处理器设置一调度队列,队列中包括一个或多个虚拟处理器。为每个虚拟处理器设置一调度值,此调度值与虚拟处理器获得的物理处理器的时间片的值是正相关关系。虚拟处理器的调度值载大,当前为虚拟处理器分配的时间片越多。每次虚拟处理器调度之后,其调度值发生变化。物理处理器的负载值是物理处理器的调度队列中所有虚拟处理器的调度值的和。如果一物理处理器的调度队列中所有的虚拟处理器的调度值均为零则表示此物理处理器当前空闲,负载值为0,其它物理处理器的负载值不为零,则表明当前系统的负载不均衡。0032 如图1所示,基于最高负载的进。
18、行负载均衡调度的方法包括:虚拟机调度器根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。0033 虚拟机调度器为每个虚拟机分配w、c二元数组,用户可以手动修改二元数组的值。根据VM(w,c)值为虚拟机处理器分配调度值T,w控制相对获得量,c控制上线值。0034 虚拟处理器的属性中还可以包括是否能够调配一项;例如为每个VCPU设置一个标志位cpu_flag可以控制VCPU只能运行在哪个PCPU上,可以根据具体应用和用户需求有关。
19、进行设置用于限制VCPU的迁移,一般情况下默认为不做此限制。虚拟处理器的属性中包括此项时,上述方法还包括:在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,执行一次或多次在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。003。
20、5 当一物理处理器的负载值为零并触发均衡操作后的具体实现中,可以(1)首先复制一份临时物理处理器列表,(2)检测列表中物理处理器的负载值,从负载值最大的物理处说 明 书CN 103106112 A4/5页7理器的调度队列中选择调度值最大的虚拟处理器,(3)如果选到能够调配的虚拟处理器,则将此虚拟处理器调度到负载值为0的物理处理器中;否则,从临时列表中删除当前物理处理器,重新返回步骤(2),以此循环,直至选择到能够调配的虚拟处理器。0036 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工。
21、作状态的虚拟处理器的级别;虚拟机调度器按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。在物理处理器的调度队列中,处于工作状态的虚拟处理器排在调度队列的前半部分,处于非工作状态的虚拟处理器排在调度队列的后半部分。将新的虚拟处理器插入调度队列的规则是:将处于工作状态的虚拟处理器放入调度队列中与此新的虚拟处理器同级别的虚拟处理器的后面,将处于非工作状态的虚拟处理器放入调度队列的末尾。例如:0037 例如可以遍历调度队列中处于工作状态的虚拟处理器并将其插入到最后一个虚拟处理器的后面。随着任务的执行,某一虚拟处理器的调度值耗完,即此虚拟处理器转为非工作状态,则将此虚拟处理器放。
22、入调度队列的末尾。0038 具体实施例0039 当前系统中共有4个物理处理器:PCPU1、PCPU2、PCPU3、PCPU4。当前PCPU1的调度队列中已无处于工作状态的VCPU,即PCPU1的调度队列中各VCPU的调度值都消耗完毕均为非工作状态。虚拟机调度器检测到PCPU1的负载值为0后,触发负载均衡的处理过程,查看其他PCPU的负载情况,其中,PCPU2调度队列包括VCPU21(100)、VCPU22(50)、VCPU23(50)、VCPU24(0)。PCPU3调度队列有VCPU31(50)、VCPU32(50)、VCPU33(0)、VCPU34(0)。PCPU4调度队列有VCPU41(1。
23、00)、VCPU42(0)、VCPU43(0)、VCPU44(0)。括号内为相应虚拟处理机的调度值。0040 按照本发明的方法,选择负载最大的PCPU即PCPU2中的调度值最大的VCPU即VCPU21,并将其迁入到PCPU1的调度队列中的最前端位置,这样PCPU1的调度队列中包含一个调度值为100的VCPU,经过相同的时间片后,四个PCPU可以同时将各自调度队列中调度值消耗完毕。0041 如果未使用本发明的方法,例如未在负载均衡时选择最大负载的PCPU上的VCPU,例如选择了PCPU3中的VCPU31(50)并将其迁移到PCPU1的调度队列中,经过相同的时间片,各PCPU消耗了50个调度值后,。
24、PCPU1和PCPU3的负载均为0。此时再次需要进行负载均衡。这样不仅增加了VCPU的迁移次数,还给系统带来一些不必要的资源消耗。0042 所以执行负载均衡时,如果选择负载较小的PCPU并在此PCPU上选择VCPU,会造成负载较小的PCPU很快没有可运行的VCPU,再次触发负载均衡,引发当前系统对其他PCPU调度队列VCPU的遍历、选择、迁移等动作的发生,消耗系统资源。0043 如图2所示,基于最高负载的进行负载均衡调度的设备包括虚拟机调度器和一个以上物理处理器。0044 虚拟机调度器用于根据物理处理器的调度队列中各虚拟处理器的调度值计算此物理处理器的负载值,当一物理处理器的负载值为零时,从负。
25、载值最大的物理处理器的调度队列中选择调度值最大的虚拟处理器将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中。说 明 书CN 103106112 A5/5页80045 虚拟处理器的属性中包括是否能够调配一项时,虚拟机调度器还用于在负载值最大的物理处理器的调度队列中选择出调度值最大的虚拟处理器后,判断此虚拟处理器的属性为能够调配时,将此虚拟处理器调配到此负载值为零的物理处理器的调度队列中;判断此虚拟处理器的属性为不能够调配时,并一次或多次执行在未作为选择目标的其它物理处理器中选择负载值最大的物理处理器并判断此虚拟处理器的属性的步骤,直至选择到在未作为选择目标的其它物理处理器中负载值最大的物。
26、理处理器并且其调度队列中调度值最大的虚拟处理器的调度值为能够调配后,将此虚拟处理器调配到负载值为零的物理处理器的调度队列中。0046 物理处理器的负载值是所述物理处理器的调度队列中所有虚拟处理器的调度值的和。0047 虚拟处理器的调度值与所述虚拟处理器获得的物理处理器的时间片的值是正相关关系。0048 虚拟处理器的调度值大于零时此虚拟处理器的状态为工作状态,虚拟处理器的调度值等于零时此虚拟处理器的状态为非工作状态;处于工作状态的虚拟处理器的级别高于处于非工作状态的虚拟处理器的级别;虚拟机调度器还用于按照虚拟机的级别从高到低的顺序设置虚拟处理器在物理处理器的调度队列中的位置。0049 综上所述,。
27、本方法可尽量减少虚拟化平台上负载均衡时VCPU迁移次数,减少不必要资源消耗,把资源更多的使用在实际的计算功能上。0050 当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。0051 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。说 明 书CN 103106112 A1/1页9图1图2说 明 书 附 图CN 103106112 A。