一种云计算平台IaaS层的动态资源监测及调度方法
技术领域
本发明涉及云计算技术领域,具体是一种云计算平台IaaS层的动态资源监测及调度方法。
背景技术
随着云计算技术的迅猛发展,云环境下的数据中心的各种资源也在不断的增加,如何通过资源的调度达到降低数据中心的能耗,提高系统资源的利用率是一个很重要的内容。目前,在以降低数据中心能耗为目的的资源调度方法中,主要包括两类方法:第一类主要通过动态调节CPU的电压或者频率来实现节能目的;第二类方法是关闭不需要的服务器资源实现节能。当前以提高系统资源利用率为目标的调度方法采用的主要策略为虚拟资源动态优化分配物理资源,以减少云计算环境下所需的物理资源并提高资源的利用率。
以降低数据中心能耗和提高其资源利用率为目的的方法可以分为两种,一种是依靠初始阶段的合理分配来避免资源的浪费,另一种是在虚拟机资源的运行过程中对其进行动态的调度来实现资源利用率的提高。第一种方式可能存在一个严重的问题,由于运行于数据中心的所有虚拟机对于资源的使用程度与对计算能力的需求并不是一成不变的,因此在这种时候便会出现负载分布的不均衡,可能极大地浪费物理资源。相比之下,第二种方式在虚拟机资源的运行过程中动态地调度虚拟机资源要好一些,利用动态迁移虚拟机的技术能够在不关闭虚拟机的情况下,仅仅经过短时间的服务暂停便能够将一个虚拟机从一个物理服务器迁移到另外一个物理服务器上重新运行起来并且运行状态和迁移之前保持一致。
在动态的虚拟机资源的调度方法中,目前采用的方法主要是通过基于SLA资源分配器来实现资源使用者与资源提供者之间的协商,最终实现资源的优化分配。
基于SLA资源分配器来实现资源的动态调度方法,能够有效地解决同构数据中心的资源调度问题。所谓的同构数据中心也就是数据中心是由相同配置的服务器构成。但是现实状况往往都是数据中心中的服务器配置各异,因此此调度方法的效果并不理想。该方法仅仅考虑到了服务器的计算能力,并没有充分考虑到内存与网络资源。同时,此调度方法并未考虑到调度的成本与调度时间对于调度的整体影响。最后此方法并未考虑到服务器的瞬时负载变化对于资源调度的影响,因此容易出现瞬间的负载峰值或者谷值触发不必要的调度,造成资源的浪费影响整体的性能。
发明内容
针对现有技术存在的问题,本发明提供一种云计算平台IaaS层的动态资源监测及调度方法,用于监测和调度由控制服务器和若干计算服务器构成的数据中心的资源。
本发明的技术方案是:
一种云计算平台IaaS层的动态资源监测及调度方法,包括如下步骤:
步骤1:控制服务器收集数据中心的各个计算服务器的当前状态信息;
所述计算服务器的当前状态包括运行状态和候补状态;
所述运行状态是指计算服务器处于开机状态,处于运行状态的计算服务器为运行节点,开机状态分为工作状态和闲置状态,其中,工作状态是指计算服务器正在运行虚拟机的状态,处于工作状态的计算服务器为工作节点;闲置状态是指计算服务器未执行任务的状态,处于闲置状态的计算服务器为闲置节点;
所述候补状态是指计算服务器处于待机或者关机状态;处于待机状态或者关机状态的计算服务器为候补节点;
步骤2:控制服务器遍历并收集数据中心中所有工作节点的使用状态,包括:CPU利用率、内存利用率和带宽利用率;
步骤3:控制服务器根据当前遍历的工作节点的使用状态,判断数据中心中的工作节点负载状态,若判断当前的工作节点负载超过阈值,则从候补节点中选择一个候补节点使之成为运行节点,并结束遍历;否则继续遍历剩余的工作节点;
步骤4:控制服务器不停地遍历所有工作节点进行虚拟机迁移条件判断,所述虚拟机迁移条件包括虚拟机迁移上限触发条件和虚拟机迁移下限触发条件:判断工作节点满足虚拟机迁移上限触发条件,是,则当前工作节点为待迁移的工作节点,执行步骤5,否则判断工作节点是否满足虚拟机迁移下限触发条件,是,则执行步骤6,则当前工作节点为待迁移的工作节点,否则遍历下一个工作节点,若遍历结束时,没有满足虚拟机迁移条件的工作节点,则返回步骤1;
所述虚拟机迁移上限触发条件包括CPU利用率判断条件、内存利用率判断条件和带宽利用率判断条件;
步骤4-1:利用虚拟机迁移上限触发条件中的CPU利用率判断条件对工作节点进行判断,过程如下:
步骤4-1-1:控制服务器令当前遍历的工作节点运行测试任务,记录针对于每个测试任务的实际花费时间Treal,结合预期花费时间Texp计算出每项测试任务的SLA等级l:
式中,Treal表示每个测试任务的实际花费时间;Texp表示预期花费时间;
步骤4-1-2:根据计算出的所有SLA等级,控制服务器计算工作节点的综合SLA等级Lr,综合SLA等级即衡量工作节点CPU计算能力的标准:
式中,测试任务i=1……n,li为第i个测试任务的SLA等级;
将综合SLA等级、内存利用率和带宽利用率称为监测因素;
步骤4-1-3:在控制服务器中设定变量S,该变量用来表示该当前工作节点的SLA综合等级Lr连续低于当前工作节点中所有虚拟机的最大SLA综合等级Lmax的次数,经过连续k个数据采集周期的遍历过程,S的累计值若高于阈值μ,则执行步骤4-1-4;在连续k个数据采集周期的遍历过程中若出现某次Lr高于Lmax的情况则将S清零,并结束对当前工作节点的遍历;
步骤4-1-4:控制服务器预测当前工作节点在下一个数据采集周期内SLA综合等级L′r,若L′r仍然小于Lmax,则当前工作节点满足虚拟机迁移上限触发条件,执行步骤5,否则将S清零,并结束对当前工作节点的遍历;
步骤4-2:利用虚拟机迁移上限触发条件中的内存利用率/带宽利用率判断条件对工作节点进行判断,过程如下:
步骤4-2-1:在控制服务器中设定预测阈值μ1、迁移触发阈值μ2和遍历次数n1;
步骤4-2-2:控制服务器计算当前遍历的工作节点中的所有虚拟机所需内存上限/带宽上限之和Mr;
步骤4-2-3:控制服务器判断Mr是否大于当前遍历的工作节点的内存/带宽:是,则控制服务器获取当前遍历的工作节点的内存利用率/带宽利用率m,否,则结束对当前工作节点的遍历;
步骤4-2-4:控制服务器判断m是否大于μ1,是,则执行步骤4-2-5,否,则结束对当前工作节点的遍历;
步骤4-2-5:控制服务器连续k个数据采集周期获取当前遍历的工作节点的内存利用率/带宽利用率,若所有的内存利用率/带宽利用率均大于μ1,且k≥n1,则执行步骤4-2-6,否则结束对当前工作节点的遍历;
步骤4-2-6:控制服务器预测下一个数据采集周期的当前遍历的工作节点的内存利用率/带宽利用率m1,并判断m1是否大于μ2且内存利用率/带宽利用率预测值的走势呈上升趋势,是,则当前工作节点为待迁移的工作节点,执行步骤5,否,则步骤4-2-5;
判断工作节点是否满足虚拟机迁移下限触发条件的过程如下;
步骤4-3:利用当前工作节点的CPU利用率、内存利用率和带宽利用率,对工作节点进行判断,过程如下:
步骤4-3-1:在控制服务器中设定CPU闲置阀值Mv、内存闲置阀值Mw、带宽闲置阀值My和闲置统计量阀值Ms;
步骤4-3-2:控制服务器获取当前遍历的工作节点的CPU利用率v,内存利用率w和带宽利用率y,判断v≤Mv、w≤Mw、y≤My是否同时满足,是,则控制服务器将当前遍历的工作节点的闲置统计量加1,否,则将闲置统计量清零,并结束对当前工作节点的遍历;
步骤4-3-3:控制服务器判断当前遍历的工作节点的闲置统计量是否大于闲置统计量阀值,是,则执行步骤4-3-4,否,则结束对当前工作节点的遍历;
步骤4-3-4:控制服务器预测当前工作节点在下一个数据采集周期内的CPU利用率、内存利用率和带宽利用率,并判断v≤Mv、w≤Mw、y≤My是否同时满足,是,则当前工作节点为待迁移的工作节点,执行步骤5,否,则结束对当前工作节点的遍历;
步骤5:控制服务器选取待迁移的工作节点中的目标虚拟机,即需要被迁移的虚拟机;
步骤5-1:若待迁移的工作节点是由虚拟机迁移上限触发条件所触发的,则执行步骤5-2;若待迁移的工作节点是由虚拟机迁移下限触发条件所触发的,则该工作节点中的所有虚拟机均为目标虚拟机,并执行步骤6;
步骤5-2:在待迁移的工作节点中选取目标虚拟机;
步骤5-2-1:利用虚拟机迁移上限触发条件中的CPU利用率判断条件对待迁移的工作节点进行判断,过程如下:
步骤5-2-1-1:控制服务器将100%的内存利用率均分成N个区间,将所有虚拟机按照其已使用内存占当前工作节点的比例划分到相应区间内,并且将各个区间按照内存利用率从高到低进行排序,将没有虚拟机的区间剔除,剩余的每个区间均作为一个元素加入队列Q;
步骤5-2-1-2:控制服务器确定要迁移的虚拟机的个数n2;
步骤5-2-1-3:控制服务器判断队列Q是否为空:是,则选定目标虚拟机,否,则选取队列Q中第一个元素R并将其在队列Q中删除,执行步骤5-2-1-4;
步骤5-2-1-4:控制服务器判断元素R中虚拟机个数n3是否大于等于n2:是,则将R中的前n2个虚拟机加入目标虚拟机集合,即选取了目标虚拟机,否,则将R中的所有虚拟机加入目标虚拟机集合,并重设要迁移的虚拟机的个数为n2-n3,返回步骤5-2-1-3;
步骤5-2-2:利用虚拟机迁移上限触发条件中的内存利用率对待迁移的工作节点进行判断,过程如下:
步骤5-2-2-1:控制服务器遍历待迁移的工作节点中的所有虚拟机,按照其已使用内存占当前工作节点的比例由小到大的顺序对虚拟机进行排序;
步骤5-2-2-2:按照内存利用率从小到大的顺序,将虚拟机依次加入目标虚拟机集合中,直到某时刻剩余虚拟机的内存利用率之和小于预测阈值μ1时,当前的目标虚拟机集合即为选定的目标虚拟机;
步骤5-2-3:利用虚拟机迁移上限触发条件中的带宽利用率对待迁移的工作节点进行判断,过程如下:
步骤5-2-3-1:控制服务器将100%的内存利用率均分成N1个区间,将所有虚拟机按照其已使用内存占当前工作节点的比例划分到相应区间内,并且将各个区间按照内存利用率从低到高进行排序,将没有虚拟机的区间剔除,剩余的每个区间均作为一个元素加入队列Q1;
步骤5-2-3-2:控制服务器判断队列Q1是否不为空:是,则选取队列Q1中第一个元素R1,将其中的虚拟机按照带宽利用率从大到小的顺序进行排序,并将元素R1在队列Q1中删除;否,则选定目标虚拟机;
步骤5-2-3-3:控制服务器判断元素R1是否为空:是,则返回步骤5-2-3-2,否,则选取R1中的第一个虚拟机并将其加入目标虚拟机集合中;
步骤5-2-3-4:判断剩余虚拟机的带宽利用率之和是否小于预测阈值μ1,是,则当前的目标虚拟机集合即为选定的目标虚拟机;否,则返回步骤5-2-3-2;
步骤6:控制服务器为目标虚拟机选取目标服务器,即目标虚拟机要迁入的计算服务器;
步骤6-1:控制服务器判断所有工作节点是否能够容纳目标虚拟机:控制服务器遍历所有工作节点,判断工作节点的内存量和带宽量是否同时大于目标虚拟机的内存量和带宽量,且工作节点的SLA综合等级大于目标虚拟机集合的SLA综合等级,是,当前工作节点能够容纳目标虚拟机,否,则遍历下一个工作节点;
步骤6-2:采用轮盘赌算法确定目标虚拟机要迁入的计算服务器;
步骤6-2-1:控制服务器计算所有能够容纳目标虚拟机的工作节点的空闲系数;
式中,α为SLA综合等级权重值,β为内存利用率权重值,γ为带宽利用率权重值,α,β,γ取值全都大于零并且满足α+β+γ=1,li为当前计算服务器的SLA综合等级,为计算服务器的最大SLA综合等级,mi为内存利用率,Mi为物理内存,nj为带宽利用率,Ni为总带宽;
步骤6-2-2:控制服务器根据各工作节点的空闲系数计算该工作节点的区域长度
按照各工作节点间的区域长度比例将轮盘划分区间,即确定出各工作节点所在区域;
步骤6-2-3:控制服务器选择一个0-1之间的随机数x,并通过确定该随机数所对应的工作节点Z,选取第Z个工作节点作为最终目标服务器;
步骤7:控制服务器将目标虚拟机迁入确定的目标服务器。
所述步骤4-1-4、步骤4-2-6以及步骤4-3-4均采用线性回归方法进行预测,具体过程如下:步骤1:控制服务器在一个时间序列上取得与该时间序列中的时间对应的监测因素,构成监测因素样本集合,设定误差阈值、最小步长、最小样本数和样本集合长度,并确定样本集合的开始索引为0;
步骤2:控制服务器根据时间序列及其对应的监测因素建立监测因素预测函数,用以描述监测因素与时间的线性关系v=at+b,其中,v为监测因素,t为时间,a、b为未知参数;
步骤3:控制服务器判断样本集合长度与开始索引ω的差是否大于最小样本数η,是,则执行步骤4,否,则执行步骤9;
步骤4:控制服务器计算监测因素预测函数中的未知参数a和b;
式中,
为样本中的时间序列t
i的平均值,
为样本中的监测因素v
i的平均值;
步骤5:控制服务器计算监测因素样本集合的实际误差σ2;
步骤6:控制服务器判断实际误差σ
2是否小于误差阈值λ,是,则执行步骤7,否,则令
并执行步骤3;
步骤7:控制服务器记录当前计算的a值和b值作为正确的a值和b值;
步骤8:控制服务器判断
取值是否大于0并且
大于最小步长θ,是,则令
并执行步骤3,否,则执行步骤9;
步骤9:控制服务器判断是否存在正确的a值和b值,是,则取得前次正确的a值和b值,根据监测因素预测函数预测下一时刻的监测因素vn+1并结束,否,则直接结束。
有益效果:
针对节能驱动的数据中心资源调度方法往往只局限于同构数据中心的资源调度,本发明可以通过利用基于时间的SLA综合等级的方式去衡量数据中心中服务器集群中每台服务器的计算能力,来统一计算能力的衡量标准,另外,增加内存大小与带宽的大小作为资源调度的考虑因素,将其纳入调度范畴,来扩大资源调度方法的应用范围从而可以完成异构数据中心的资源调度。
对于调度过程中的调度成本问题主要取决于待调度的虚拟机已占用内存大小,因此根据所有虚拟机内存占用大小采用范围分段的方式,便能够有效的衡量各个虚拟机的调度成本,并且根据调度的规则进行调度目标的选择,进而在调度效果与调度成本上进行平衡。对于调度所需时间与瞬时负载峰值与谷值对资源调度效果的影响,采用延时触发调度并且结合线性回归进行预测的方式便能够有效的解决。对于目标服务器的选取,采用轮盘赌的方式使得目标服务器的选取更加合理。
附图说明
图1为本发明具体实施方式的数据中心拓扑图;
图2为本发明具体实施方式的云计算平台IaaS层的动态资源监测及调度方法流程图;
图3为本发明具体实施方式的利用虚拟机迁移上限触发条件中的CPU利用率判断条件对工作节点进行判断的流程图;
图4为本发明具体实施方式的利用虚拟机迁移上限触发条件中的内存利用率/带宽利用率判断条件对工作节点进行判断的流程图;
图5为本发明具体实施方式的判断工作节点是否满足虚拟机迁移下限触发条件的流程图;
图6为本发明具体实施方式的采用线性回归方法预测监测因素的流程图;
图7为本发明具体实施方式的利用虚拟机迁移上限触发条件中的带宽利用率对待迁移的工作节点进行判断的流程图;
图8为本发明具体实施方式的利用虚拟机迁移上限触发条件中的CPU利用率判断条件对待迁移的工作节点进行判断的流程图;
图9为本发明具体实施方式的利用虚拟机迁移上限触发条件中的内存利用率对待迁移的工作节点进行判断的流程图;
图10为本发明具体实施方式的控制服务器为目标虚拟机选取目标服务器的流程图;
图11为本发明具体实施方式的轮盘赌算法的原理示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做详细说明。
本实施方式是对如图1所示的由控制服务器和若干计算服务器构成的数据中心的资源进行监测和调度,该数据中心采用OpenStack技术进行平台的搭建及资源的管理。
计算服务器和控制服务器的配置如表1所示。
表1服务器配置
OpenStack资源管理平台即数据中心的环境配置如表2所示。
表2资源管理平台的环境配置
对于资源管理平台(数据中心)的各个节点服务器任务的分配,采取1个控制服务器(控制节点),其余5个均为计算服务器(计算节点)的方式,其中控制服务器所承担的组件有OpenStack的Keystone,Glance,Swift,Dashboard,Nova管理组件,并且在控制服务器上安装资源管理平台的所有管理组件,通过Apache服务器对外提供管理服务而其他的5个计算服务器则作为Nova的计算节点用来提供虚拟化服务。并且每个服务器配置双网卡,各个服务器之间通过其中一块网卡利用私有局域网相互连通,而另外一块网卡与公网相连,用以对外提供服务。
数据中心配置如表3所示。
表3数据中心配置
在数据中心中设置了三种计算能力不同的CPU,用以证明本发明方法在异构环境中的表现。此外在数据中心中设置主机数量为6是由于真实的数据中心中控制节点并不进行资源提供因此,实际组成资源池的也只有5台服务器。
本实施方式的云计算平台IaaS层的动态资源监测及调度方法,IaaS(Infrastructure as aService),即基础设施即服务,如图2所示,包括如下步骤:
步骤1:控制服务器收集数据中心的各个计算服务器的当前状态信息;
所述计算服务器的当前状态包括运行状态和候补状态;
所述运行状态是指计算服务器处于开机状态,处于运行状态的计算服务器为运行节点,开机状态分为工作状态和闲置状态,其中,工作状态是指计算服务器正在运行虚拟机的状态,处于工作状态的计算服务器为工作节点;闲置状态是指计算服务器未执行任务的状态,处于闲置状态的计算服务器为闲置节点;
所述候补状态是指计算服务器处于待机或者关机状态;处于待机状态或者关机状态的计算服务器为候补节点;
步骤2:控制服务器遍历并收集数据中心中所有工作节点的使用状态,包括:CPU利用率、内存利用率和带宽利用率;
步骤3:控制服务器根据当前遍历的工作节点的使用状态,判断数据中心中的工作节点负载状态,若判断当前的工作节点负载超过阈值,则从候补节点中选择一个候补节点使之成为运行节点,并结束遍历;否则继续遍历剩余的工作节点;
步骤4:控制服务器不停地遍历所有工作节点进行虚拟机迁移条件判断,所述虚拟机迁移条件包括虚拟机迁移上限触发条件和虚拟机迁移下限触发条件:判断工作节点满足虚拟机迁移上限触发条件,是,则当前工作节点为待迁移的工作节点,执行步骤5,否则判断工作节点是否满足虚拟机迁移下限触发条件,是,则执行步骤6,则当前工作节点为待迁移的工作节点,否则遍历下一个工作节点,若遍历结束时,没有满足虚拟机迁移条件的工作节点,则返回步骤1;
所述虚拟机迁移上限触发条件包括CPU利用率判断条件、内存利用率判断条件和带宽利用率判断条件;
步骤4-1:利用虚拟机迁移上限触发条件中的CPU利用率判断条件对工作节点进行判断,过程如下:
步骤4-1-1:控制服务器令当前遍历的工作节点运行测试任务,记录针对于每个测试任务的实际花费时间Treal,结合预期花费时间Texp计算出每项测试任务的SLA等级l:
式中,Treal表示每个测试任务的实际花费时间;Texp表示预期花费时间;
步骤4-1-2:根据计算出的所有SLA等级,控制服务器计算工作节点的综合SLA等级Lr,综合SLA等级即衡量工作节点CPU计算能力的标准:
式中,测试任务i=1……n,li为第i个测试任务的SLA等级;
将综合SLA等级、内存利用率和带宽利用率称为监测因素;
步骤4-1-3:在控制服务器中设定变量S,该变量用来表示该当前工作节点的SLA综合等级Lr连续低于当前工作节点中所有虚拟机的最大SLA综合等级Lmax的次数,经过连续k个数据采集周期的遍历过程,S的累计值若高于阈值μ,则执行步骤4-1-4;在连续k个数据采集周期的遍历过程中若出现某次Lr高于Lmax的情况则将S清零,并结束对当前工作节点的遍历;
步骤4-1-4:控制服务器预测当前工作节点在下一个数据采集周期内SLA综合等级L′r,若L′r仍然小于Lmax,则当前工作节点满足虚拟机迁移上限触发条件,执行步骤5,否则将S清零,并结束对当前工作节点的遍历;
步骤4-2:利用虚拟机迁移上限触发条件中的内存利用率/带宽利用率判断条件对工作节点进行判断,过程如下:
步骤4-2-1:在控制服务器中设定预测阈值μ1、迁移触发阈值μ2和遍历次数n1;
步骤4-2-2:控制服务器计算当前遍历的工作节点中的所有虚拟机所需内存上限/带宽上限之和Mr;
步骤4-2-3:控制服务器判断Mr是否大于当前遍历的工作节点的内存/带宽:是,则控制服务器获取当前遍历的工作节点的内存利用率/带宽利用率m,否,则结束对当前工作节点的遍历;
步骤4-2-4:控制服务器判断m是否大于μ1,是,则执行步骤4-2-5,否,则结束对当前工作节点的遍历;
步骤4-2-5:控制服务器连续k个数据采集周期获取当前遍历的工作节点的内存利用率/带宽利用率,若所有的内存利用率/带宽利用率均大于μ1,且k≥n1,则执行步骤4-2-6,否则结束对当前工作节点的遍历;
步骤4-2-6:控制服务器预测下一个数据采集周期的当前遍历的工作节点的内存利用率/带宽利用率m1,并判断m1是否大于μ2且内存利用率/带宽利用率预测值的走势呈上升趋势,是,则当前工作节点为待迁移的工作节点,执行步骤5,否,则步骤4-2-5;
判断工作节点是否满足虚拟机迁移下限触发条件的过程如下;
步骤4-3:利用当前工作节点的CPU利用率、内存利用率和带宽利用率,对工作节点进行判断,过程如下:
步骤4-3-1:在控制服务器中设定CPU闲置阀值Mv、内存闲置阀值Mw、带宽闲置阀值My和闲置统计量阀值Ms;
步骤4-3-2:控制服务器获取当前遍历的工作节点的CPU利用率v,内存利用率w和带宽利用率y,判断v≤Mv、w≤Mw、y≤My是否同时满足,是,则控制服务器将当前遍历的工作节点的闲置统计量加1,否,则将闲置统计量清零,并结束对当前工作节点的遍历;
步骤4-3-3:控制服务器判断当前遍历的工作节点的闲置统计量是否大于闲置统计量阀值,是,则执行步骤4-3-4,否,则结束对当前工作节点的遍历;
步骤4-3-4:控制服务器预测当前工作节点在下一个数据采集周期内的CPU利用率、内存利用率和带宽利用率,并判断v≤Mv、w≤Mw、y≤My是否同时满足,是,则当前工作节点为待迁移的工作节点,执行步骤5,否,则结束对当前工作节点的遍历;
步骤5:控制服务器选取待迁移的工作节点中的目标虚拟机,即需要被迁移的虚拟机;
步骤5-1:若待迁移的工作节点是由虚拟机迁移上限触发条件所触发的,则执行步骤5-2;若待迁移的工作节点是由虚拟机迁移下限触发条件所触发的,则该工作节点中的所有虚拟机均为目标虚拟机,并执行步骤6:
步骤5-2:在待迁移的工作节点中选取目标虚拟机:
步骤5-2-1:利用虚拟机迁移上限触发条件中的CPU利用率判断条件对待迁移的工作节点进行判断,过程如下:
步骤5-2-1-1:控制服务器将100%的内存利用率均分成N个区间,将所有虚拟机按照其已使用内存占当前工作节点的比例划分到相应区间内,并且将各个区间按照内存利用率从高到低进行排序,将没有虚拟机的区间剔除,剩余的每个区间均作为一个元素加入队列Q;
步骤5-2-1-2:控制服务器确定要迁移的虚拟机的个数n2;
步骤5-2-1-3:控制服务器判断队列Q是否为空:是,则选定目标虚拟机,否,则选取队列Q中第一个元素R并将其在队列Q中删除,执行步骤5-2-1-4;
步骤5-2-1-4:控制服务器判断元素R中虚拟机个数n3是否大于等于n2:是,则将R中的前n2个虚拟机加入目标虚拟机集合,即选取了目标虚拟机,否,则将R中的所有虚拟机加入目标虚拟机集合,并重设要迁移的虚拟机的个数为n2-n3,返回步骤5-2-1-3;
步骤5-2-2:利用虚拟机迁移上限触发条件中的内存利用率对待迁移的工作节点进行判断,过程如下:
步骤5-2-2-1:控制服务器遍历待迁移的工作节点中的所有虚拟机,按照其已使用内存占当前工作节点的比例由小到大的顺序对虚拟机进行排序;
步骤5-2-2-2:按照内存利用率从小到大的顺序,将虚拟机依次加入目标虚拟机集合中,直到某时刻剩余虚拟机的内存利用率之和小于预测阈值μ1时,当前的目标虚拟机集合即为选定的目标虚拟机;
步骤5-2-3:利用虚拟机迁移上限触发条件中的带宽利用率对待迁移的工作节点进行判断,过程如下:
步骤5-2-3-1:控制服务器将100%的内存利用率均分成N1个区间,将所有虚拟机按照其已使用内存占当前工作节点的比例划分到相应区间内,并且将各个区间按照内存利用率从低到高进行排序,将没有虚拟机的区间剔除,剩余的每个区间均作为一个元素加入队列Q1;
步骤5-2-3-2:控制服务器判断队列Q1是否不为空:是,则选取队列Q1中第一个元素R1,将其中的虚拟机按照带宽利用率从大到小的顺序进行排序,并将元素R1在队列Q1中删除;否,则选定目标虚拟机;
步骤5-2-3-3:控制服务器判断元素R1是否为空:是,则返回步骤5-2-3-2,否,则选取R1中的第一个虚拟机并将其加入目标虚拟机集合中;
步骤5-2-3-4:判断剩余虚拟机的带宽利用率之和是否小于预测阈值μ1,是,则当前的目标虚拟机集合即为选定的目标虚拟机;否,则返回步骤5-2-3-2;
步骤6:控制服务器为目标虚拟机选取目标服务器,即目标虚拟机要迁入的计算服务器;
步骤6-1:控制服务器判断所有工作节点是否能够容纳目标虚拟机:控制服务器遍历所有工作节点,判断工作节点的内存量和带宽量是否同时大于目标虚拟机的内存量和带宽量,且工作节点的SLA综合等级大于目标虚拟机集合的SLA综合等级,是,当前工作节点能够容纳目标虚拟机,否,则遍历下一个工作节点;
步骤6-2:采用轮盘赌算法确定目标虚拟机要迁入的计算服务器;
步骤6-2-1:控制服务器计算所有能够容纳目标虚拟机的工作节点的空闲系数;
式中,α为SLA综合等级权重值,β为内存利用率权重值,γ为带宽利用率权重值,α,β,γ取值全都大于零并且满足α+β+γ=1,l
i为当前计算服务器的SLA综合等级,
为计算服务器的最大SLA综合等级,m
i为内存利用率,M
i为物理内存,n
j为带宽利用率,N
i为总带宽;
步骤6-2-2:控制服务器根据各工作节点的空闲系数计算该工作节点的区域长度
按照各工作节点间的区域长度比例将轮盘划分区间,即确定出各工作节点所在区域;
步骤6-2-3:控制服务器选择一个0-1之间的随机数x,并通过
确定该随机数所对应的工作节点Z,选取第Z个工作节点作为最终目标服务器;
步骤7:控制服务器将目标虚拟机迁入确定的目标服务器。
所述步骤4-1-4、步骤4-2-6以及步骤4-3-4均采用线性回归方法进行预测,具体过程如下:步骤1:控制服务器在一个时间序列上取得与该时间序列中的时间对应的监测因素,构成监测因素样本集合,设定误差阈值、最小步长、最小样本数和样本集合长度,并确定样本集合的开始索引为0;
步骤2:控制服务器根据时间序列及其对应的监测因素建立监测因素预测函数,用以描述监测因素与时间的线性关系v=at+b,其中,v为监测因素,t为时间,a、b为未知参数;
步骤3:控制服务器判断样本集合长度
与开始索引ω的差是否大于最小样本数η,是,则执行步骤4,否,则执行步骤9;
步骤4:控制服务器计算监测因素预测函数中的未知参数a和b;
式中,
为样本中的时间序列t
i的平均值,
为样本中的监测因素v
i的平均值;
步骤5:控制服务器计算监测因素样本集合的实际误差σ2;
步骤6:控制服务器判断实际误差σ
2是否小于误差阈值λ,是,则执行步骤7,否,则令
并执行步骤3;
步骤7:控制服务器记录当前计算的a值和b值作为正确的a值和b值;
步骤8:控制服务器判断
取值是否大于0并且
大于最小步长θ,是,则令
并执行步骤3,否,则执行步骤9;
步骤9:控制服务器判断是否存在正确的a值和b值,是,则取得前次正确的a值和b值,根据监测因素预测函数预测下一时刻的监测因素vn+1并结束,否,则直接结束。