发明内容
有鉴于此,本发明提供了一种云计算平台环境下的动态任务调度方法及装置,用以解决现有技术中的混合遗传调度算法收敛速度慢的问题,其技术方案如下:
一方面,一种云计算平台环境下的动态任务调度方法,其特征在于,预先确定各节点单独对各类任务的最大平均响应次数、各节点分配给虚拟机的资源比例,并且,通过排队论确定云计算平台对各类任务的期望平均服务率,所述方法包括:
(a)初始化抗体种群,得到抗体种群An=[A1 A2…At],并记录迭代次数n为0,其中,抗体种群An中的每个抗体代表一种配置方案,每个抗体被编码为多个等位基因,每个等位基因对应一个节点,每个等位基因由多个子段组成,每个子段对应一种虚拟机;
(b)基于所述云计算平台对各类任务的期望平均服务率、各节点单独对各类任务的最大平均响应次数、各节点分配给虚拟机的资源比例计算抗体种群An中各个抗体的抗体-抗原亲和度;
(c)判断是否存在抗体-抗原亲和度大于预设值的抗体,如果是,则确定该抗体为最优抗体,以使云计算平台基于所述最优抗体进行任务调度;否则转入步骤(d);
(d)对抗体种群An中的每个抗体进行克隆操作,得到包括t个抗体子群的抗体种群
(e)对所述抗体种群的t个抗体子群中的抗体按设定规则进行重组,得到包括t个重组抗体子群的抗体种群
(f)对所述抗体种群中每个抗体的编码中指定的等位基因进行变异操作,得到包括t个变异抗体子群的抗体种群
(g)将抗体种群An中的t个抗体分别并入所述抗体种群中对应的变异抗体子群中,得到包括t个组合抗体子群的抗体种群,将该抗体种群中每个组合抗体子群中亲和度最大的抗体进行组合,得到新一代抗体种群An+1,并将迭代次数n更新为n+1,然后转入步骤(b)。
其中,所述通过排队论确定云计算平台对各类任务的期望平均服务率的过程包括:
用排队论对任务输入流进行建模,确定各类任务的到达率;
基于确定出的所述各类任务的到达率,通过排队模型M/M/1/∞确定所述云计算平台对各类任务的期望平均服务率。
其中,对抗体种群An中的每个抗体进行克隆操作的过程包括:
确定每个抗体的抗体-抗体亲和度;
通过每个抗体的抗体-抗原亲和度和抗体-抗体亲和度确定每个抗体的克隆规模;
通过确定出的克隆规模对抗体进行克隆操作。
可选的,上述方法包括:
在确定出最优抗体后,对所述最优抗体进行解码得到集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例;
依据所述集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例调整节点运行数量和节点上运行的虚拟机类型,并向节点上的虚拟机调度任务。
可选的,上述方法还包括:
确定抗体中额外资源最多的虚拟机Vmax和资源最紧缺的虚拟机Vmin;
在部署有所述虚拟机Vmax的节点中选择对任务处理能力最弱的一个节点,在抗体亲和度满足预设条件的前提下,均衡该节点上分配给虚拟机的资源,使分配给虚拟机Vmax的资源减少,分配给所述虚拟机Vmin的资源增加。
另一方面,一种云计算平台环境下的动态任务调度装置,包括:
初始化模块,用于初始化抗体种群,得到抗体种群An=[A1 A2…At],并记录迭代次数n为0,其中,抗体种群An中的每个抗体代表一种配置方案,每个抗体被编码为多个等位基因,每个等位基因对应一个节点,每个等位基因由多个子段组成,每个子段对应一种虚拟机;
亲和度计算模块,用于基于预先确定的各节点单独对各类任务的最大平均响应次数、各节点分配给虚拟机的资源比例,以及通过排队论确定的云计算平台对各类任务的期望平均服务率计算抗体种群An中各个抗体的抗体-抗原亲和度,所述抗体-抗原亲和度为云计算系统所能提供的计算能力与任务所需计算能力的吻合度;
判断模块,用于判断是否存在抗体-抗原亲和度大于预设值的抗体;
第一确定模块,用于当抗体的抗体-抗原亲和度大于预设值时,确定对应的抗体最优抗体,以使云计算平台基于所述最优抗体进行任务调度;
抗体克隆模块,用于当抗体的抗体-抗原亲和度小于或等于预设值时,对抗体种群An中的每个抗体进行克隆操作,得到包括t个抗体子群的抗体种群
抗体重组模块,用于对所述抗体种群的t个抗体子群中的抗体按设定规则进行重组,得到包括t个重组抗体子群的抗体种群
抗体变异模块,用于对所述抗体种群中每个抗体的编码中指定的等位基因进行变异操作,得到包括t个变异抗体子群的抗体种群
抗体选择模块,用于将抗体种群An中的t个抗体分别并入所述抗体种群中对应的变异抗体子群中,得到包括t个组合抗体子群的抗体种群,将该抗体种群中每个组合抗体子群中亲和度最大的抗体进行组合,得到新一代抗体种群An+1,并将迭代次数n更新为n+1。
其中,所述抗体克隆模块包括:
第一确定子模块,用于确定每个抗体的抗体-抗体亲和度;
第二确定子模块,用于通过每个抗体的抗体-抗原亲和度和抗体-抗体亲和度确定每个抗体的克隆规模;
克隆子模块,用于通过确定出的克隆规模对抗体进行克隆操作;
可选的,上述装置还包括:
抗体解码模块,用于在确定出最优抗体后,对所述最优抗体进行解码得到集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例;
任务调度模块,用于依据所述集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例调整节点运行数量和节点上运行的虚拟机类型,并向节点上的虚拟机调度任务。
可选的,上述装置还包括:
第二确定模块,用于确定抗体中额外资源最多的虚拟机Vmax和资源最紧缺的虚拟机Vmin;
资源均衡模块,用于在部署有所述虚拟机Vmax的节点中选择对任务处理能力最弱的一个节点,在抗体亲和度满足预设条件的前提下,均衡该节点上分配给虚拟机的资源,使分配给虚拟机Vmax的资源减少,分配给所述虚拟机Vmin的资源增加。
上述技术方案具有如下有益效果:
本发明提供的云计算平台环境下的动态任务调度方法及装置,首先利用排队论对任务进行排队处理,然后用人工免疫理论中的免疫克隆选择策略对集群中的计算资源进行合理配置,本发明能快速搜索出最优配置,提高集群资源利用率。另外,负载均衡处理进一步提高了搜索出最优配置的速度,并且使得集群资源的配置更加满足任务处理的需要。
实施例一
请参阅图1,为本发明实施例一提供的一种云计算平台环境下的动态任务调度方法的流程示意图。在执行本实施例提供的方法步骤之前,预先确定以下数据(假设在云计算平台中,集群节点数为C,系统总共有m种类型的任务):m类任务的到达率{λi},i=1,2,…m;云计算平台对m类任务的期望平均服务率{μi},i=1,2,…m;各节点单独对各类任务的最大平均响应次数矩阵{Rij}m·C,i=1,2,…m,j=1,2,…C、各节点分配给虚拟机的资源比例矩阵{Wij}m·C,i=1,2,…m,j=1,2,…C。
其中,确定云计算平台对各类任务的期望平均服务率、各类任务到达率的过程包括:用排队论对任务输入流进行建模,确定各类任务到达率;通过具体排队模型M/M/1/∞确定在任务到达率为{λi}条件下,满足系统对各任务平均响应时间分别小于{Eti}和总任务平均响应时间小于T0情况下最小的各任务期望平均服务率{μi}。
下面对确定云计算平台对各类任务的期望平均服务率、各类任务到达率的过程进行详细说明:
在本实施例中,对于大量涌入系统的任务,首先进行排队,通过对任务流排队现象的概率特性进行周期性地监测、分析,确定任务到达的随机分布,并估计其参数值。不同类型的任务(如任务ri)到达系统服从不同的概率分布,相同类型任务的到达间隔相互独立,且服从同一参数λi的负值数分布,λi由系统统计监测数据得到,则可以得到所有m类任务的总到达率:
本实施例中统计单位时间内到达任务ri的总数λi。
同时,由于在云计算平台中,服务器配置彼此之间存在差异,因此,要求所有服务器都有统一的计算能力是不现实的,并且这也是云计算异构分布式的主要特征,而对于虚拟机层也同样适用,因此,本实施例将云计算平台看作只有唯一服务台,采用具有可变服务率的M/M/1/∞排队模型对云计算系统进行建模,设μ为当前条件下所需的系统总服务率:
其中,μi为云计算系统对第i类任务的平均服务率。系统对于第i类任务的服务强度可表示为:
云计算系统对所有m类任务的期望服务强度为:
此外,云计算系统对第i类任务的平均响应时间(响应时间等于等待时间加上服务时间):
云计算系统对所有m类任务的期望平均响应时间为:
为实现对系统的最优控制,在系统中预先设定一些必要的参数Ti,Ti>0(i=0,1,2,…m),Ti代表系统对于第i类任务的响应时间上限,其中,T0表示云计算系统对所有m类任务的平均响应时间上限,并设定约定规则:
由此,可以得到在理论上所需的云计算系统对任务ri最低服务率μi,并且系统总服务率μ能够保证系统期望平均响应时间,第i类任务的期望平均服务率μi能够保证期望平均响应时间满足系统需求。
另外,需要说明的是,任务类型与节点上运行的虚拟机对应,即,m类任务对应m类虚拟机。虚拟机Vi在节点j上的副本表示为Fij,Fij=0表示节点j未启动Vi,Fij=1表示节点j启动Vi,如果节点j上没有启动的虚拟机,则表示节点j没有任何任务等待执行,处于待机状态。云计算系统将根据Vi对节点资源的需求变化情况动态调整节点运行数量和其上运行的虚拟机类型。此外,还需要知道当节点j仅部署虚拟机Vi时,每秒响应任务ri的最大平均次数Rij。然后假设节点j分配给虚拟机Vi的CPU资源为Wij(所占比例,用一位小数表示),故节点j提供给任务ri的响应能力是每秒Uij次,记:
Uij=Rij×Wij (8)
以上述的参数为基础,对集群进行合理配置,在保证云计算系统服务质量的前提下,搜索出能提高云计算资源利用率的最优配置,集群配置的准则定义为:
其中,节点j为在其上所部署虚拟机分配的CPU资源总和应小于节点j的CPU资源上限Wcpu,节点j在其上所部署虚拟机分配的CPU资源总和为0表示节点j处于待机状态,f表示云计算系统所能提供的计算能力与任务所需计算能力的吻合度函数(即下文中的抗体-抗原亲和度函数)。
在确定出上述数据后,给出本发明实施例提供的方法,该方法可以包括:
步骤S101:初始化抗体种群,得到抗体种群An=[A1 A2…At],并记录迭代次数n=0。
其中,抗体种群An中的每个抗体代表一种配置方案,每个抗体被编码为多个等位基因,每个等位基因对应一个节点,每个等位基因由多个子段组成,每个子段对应一种虚拟机。
设定集群节点数为C,系统共有m类任务,即具有m类虚拟机,那么,每个抗体Ax编码为Ax=α1α2…αC(x=1,2,…,t),α1,α2,…,αC均为抗体Ax的等位基因,每个等位基因αj(j=1,2,…,C)对应一个节点,每个等位基因αj由m个子段组成,因此,每个等位基因编码长为m。在本实施例中,可采用十进制编码方式,编码值aij=Wij×10,其中,Wij为节点j上分配给类型为i的虚拟机的资源比例。具体的编码规则为:
(1)αj长m,每一位都是0至9的整数,例如,αj的第一位表示节点j分配给虚拟机V1的CPU资源,如果第一位为5,则表示节点j分配50%的CPU资源给虚拟机V1,其它以此类推。
(2)αj中m个编码值之和不能超过10,这意味着j节点分配给各虚拟机的资源之和不能超过j节点所能提供的有效计算资源,保证了节点的性能。
下面以5个节点,3种虚拟机为例:设各节点分配给虚拟机的CPU资源比例如表1所示。
表1
节点2 |
20% |
50% |
30% |
节点3 |
0 |
0 |
60% |
节点4 |
0 |
0 |
0 |
节点5 |
0 |
0 |
0 |
5个节点构成5个等位基因,每个等位基因有3个子段,节点1分配100%的资源给虚拟机V1,节点2分配给虚拟机V1、V2、V3的资源分别为20%、50%、30%,节点3分配60%的资源给虚拟机V3,其它节点处于待机状态。抗体编码如下所示:
抗体Ax编码为一个m×C维的非负整数矩阵,即Ax={aij}m·C。
步骤S102:基于云计算平台对各类任务的期望平均服务率、各节点单独对各类任务的最大平均响应次数、各节点分配给虚拟机的资源比例计算抗体种群An中各个抗体的抗体-抗原亲和度。
其中,抗体-抗原亲和度为云计算系统所能提供的计算能力与任务所需计算能力的吻合度,定义为:
其中,e(Ax)定义为:
上式中的ε为一正小数,可以按需求取适当值,ε值能使最终的解更接近比期望值稍大的一侧,保证最终系统能够提供足够的计算能力,f(Ax)就是抗体Ax与抗原之间的亲和度函数,取值在0到1之间,其值越大,则抗原对其刺激作用越大,克隆规模越大。
步骤S103:判断是否存在抗体-抗原亲和度大于预设值的抗体,如果是,则确定该抗体为最优抗体,以使云计算平台基于最优抗体进行任务调度,最优抗体所代表的配置方案为最优配置方案;否则转入步骤S104。
步骤S104:对抗体种群An中的每个抗体进行克隆操作,得到包括t个抗体子群的抗体种群
在人工免疫系统中,克隆是指通过复制而形成一个群体,抗体复制的规模与抗体的抗体-抗原亲和度和抗体-抗体亲和度有关。抗体Ax复制的规模px通过下式确定:
其中,f(Ax)为抗体Ax的抗体-抗原亲和度,Θx为抗体Ax的抗体-抗体亲和度,P为与克隆规模有关的设定参数,且P>t,Int(·)为上取整函数。
Θx的定义为:Θx=min{Dxy}=min{exp(||Ax-Ay||)},x≠y,x,y=1,2,…t。定义抗体种群空间I,I={Α|Α={aij}m·C,(a1j+a2j+…amj)≤10,aij≥0},Ax、Ay表示I中的两个不同的抗体,令 Dxy表示两抗体之间的差异,由于本实施例采用十进制编码,所以Dxy取为欧几里德距离,并进行归一化处理。Θx表示抗体Ax与其它抗体之间差异的最小值,其值越大,则抗体之间的抑制作用越大。Dxy的具体计算式为:
对抗体种群An=[A1 A2…At]的克隆操作T(·)可以表示为:
步骤S105:对抗体种群的t个抗体子群中的抗体按设定规则进行重组,得到包括t个重组抗体子群的抗体种群
重组是在抗体层面对抗体种群的修改操作,将同一抗体子群中的抗体分开,不同抗体子群中的抗体组合在一起,它可以促进不同抗体之间的基因交流,有利于丰富种群多样性。重组操作可表示为TC(·)。
其中,i=1,2,…,t,j=1,2,…,pi。
步骤S106:对抗体种群中每个抗体的编码中指定的等位基因进行变异操作,得到包括t个变异抗体子群的抗体种群
基因变异将是在基因编码的层面对抗体进行变异。设是一个父解,本实施例按概率pm对分量αk(1≤k≤C)进行变异,已知编码中αk是一个m维列向量,本实施例采用按位变异的策略TB(·),即对抗体的第k位编码,用另一个m维列向量替换。
其中,i=1,2,…,t,j=1,2,…,pi。
变异后的解为:其中,满足一些必要的性质:定义m维列向量中所有值取值为非负整数,且所有值之和在0到10之间。所以的取值将有一个确定的范围,根据定义可知的取值空间为Im,Im的空间规模为:(m11-1)/(m-1)。
步骤S107:将抗体种群An中的t个抗体分别并入抗体种群中对应的变异抗体子群中,得到包括t个组合抗体子群的抗体种群,将该抗体种群中每个组合抗体子群中亲和度最大的抗体进行组合,得到新一代抗体种群An+1,并将迭代次数n更新为n+1,然后转入步骤S102。
上述操作可表示为TS(·),即通过局部择优,从经过变异操作得到的抗体种群的不同子群中分别提取在子群中亲和度相对良好的抗体,实现了种群的压缩和优胜劣汰。
其中,Αn+1为下一代抗体种群。在上述操作中,由于将父解也同时并入抗体种群中,这样保证了抗体群中的最优解不会在算法迭代过程中变差,也保证了算法按照概率1收敛到最优种群集。
本发明实施例提供的云计算平台环境下的动态任务调度方法,首先利用排队论对任务进行排队处理,然后用人工免疫理论中的免疫克隆选择策略对集群中的计算资源进行合理配置,本发明能快速搜索出最优配置,提高集群资源利用率。
实施例二
请参阅图2,为本发明实施例二提供的一种云计算平台环境下的动态任务调度方法的流程示意图。在执行本实施例提供的方法步骤之前,预先确定以下数据(假设在云计算平台中,集群节点数为C,系统总共有m种类型的任务):m类任务的到达率{λi},i=1,2,…m;云计算平台对m类任务的期望平均服务率{μi},i=1,2,…m;各节点单独对各类任务的最大平均响应次数矩阵{Rij}m·C,i=1,2,…m,j=1,2,…C、各节点分配给虚拟机的资源比例矩阵{Wij}m·C,i=1,2,…m,j=1,2,…C。在确定出上述数据后,给出本发明实施例提供的方法,该方法可以包括:
步骤S201:初始化抗体种群,得到抗体种群An=[A1 A2…At],并记录迭代次数n=0。其中,抗体种群An中的每个抗体代表一种配置方案,每个抗体被编码为多个等位基因,每个等位基因对应一个节点,每个等位基因由多个子段组成,每个子段对应一种虚拟机。
步骤S202:计算抗体种群An中各个抗体的抗体-抗原亲和度。其中,抗体-抗原亲和度为云计算系统所能提供的计算能力与任务所需计算能力的吻合度。
步骤S203:判断抗体的抗体-抗原亲和度是否大于预设值,如果是,则确定对应的抗体为最优抗体,然后转入步骤S208;否则转入步骤S204。
步骤S204:对抗体种群An中的每个抗体进行克隆操作,得到包括t个抗体子群的抗体种群
步骤S205:对抗体种群的t个抗体子群中的抗体按设定规则进行重组,得到包括t个重组抗体子群的抗体种群
步骤S206:对抗体种群中每个抗体的编码中指定的等位基因进行变异操作,得到包括t个变异抗体子群的抗体种群
步骤S207:将抗体种群An中的t个抗体分别并入抗体种群中对应的变异抗体子群中,得到包括t个组合抗体子群的抗体种群,将该抗体种群中每个组合抗体子群中亲和度最大的抗体进行组合,得到新一代抗体种群An+1,并将迭代次数n更新为n+1,然后转入步骤S202。
需要说明的是,上述步骤的与实施例一相同,详情请参见实施例一,在此不作赘述。
步骤S208:对最优抗体进行解码得到集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例。
步骤S209:依据集群各节点上部署的虚拟机类型以及各类虚拟机的计算资源比例调整节点运行数量和节点上运行的虚拟机类型,并向节点上的虚拟机调度任务。
其中,向节点上的虚拟机调度任务的规模通过以下方式确定:以节点j为例,向节点j上的虚拟机Vi调度任务ri,任务的规模λij为:
本实施例提供的方法还可以包括:
步骤S210:确定抗体中额外资源最多的虚拟机Vmax和资源最紧缺的虚拟机Vmin。
步骤S211:在部署有虚拟机Vmax的节点中选择对任务处理能力最弱的一个节点,在抗体亲和度满足预设条件的前提下,均衡该节点上分配给虚拟机的资源,使分配给虚拟机Vmax的资源减少,分配给虚拟机Vmin的资源增加。
重复执行步骤S210-步骤S211预设次数。
其中,均衡处理能力最弱的节点上分配给虚拟机的资源的过程具体为:判断该节点上是否开启虚拟机Vmin,如果是,则在该节点上减少对Vmax的一个单位(1/10)的CPU资源分配,并且将这部分CPU资源转移给此节点上的虚拟机Vmin,否则,开启虚拟机Vmin。
需要说明的是,步骤S210-步骤S211为负载平衡处理,为辅助调节的过程,在具体实行时不宜太频繁,本实施例仅在免疫循环的前几个循环、中间周期性间隔的几个循环和最后一次循环时使用,前几个循环利用负载均衡可以大大加快算法前期的收敛速度。
对本实施例提供的云计算平台环境下的动态任务调度方法进行了仿真实验,并在相同实验条件下与混合遗传算法相比较,以验证该方法的正确性和有效性。实验模拟了有20个节点的计算机集群,其中5台CPU分别为Intel(R)Core(TM)2Duo2.83GHz的Dell主机、5台CPU分别为Intel(R)Core(TM)2Duo2.33GHz的Dell主机和10台CPU为AMDAthlon(TM)64X23600+1.9GHz的Lenovo主机,并且通过查阅文献取得这三种主机对3类典型应用:BrowsingMix(BM),ShoppingMix(SM)和OrderingMix(OM)的响应能力,如表2所示。
表2
|
Req/s(BM) |
Req/s(SM) |
Req/s(OM) |
Dell(2.83GHz) |
235 |
197 |
130 |
Dell(2.33GHz) |
190 |
163 |
91 |
Lenovo(1.9GHz) |
132 |
89 |
57 |
实验过程中的应用级任务到达数据由程序自动生成(每类任务到达率在100个每秒~300个每秒之间),每类任务ri的期望响应时间上限Ti设为0.05秒,共有6类不同的任务,对应六类不同的虚拟机。初始抗体种群大小设为100个。
请参阅图3,为本实施例提供的方法与混合遗传算法的收敛速度情况比较图,从图3可以看出,在同等实验条件下,运用本实施例提供的方法的收敛速度快于运用混合遗传算法,虽然本实施例提供的方法的收敛速度出现了较大的波动(1秒至7秒),但是图中数据显示运用本实施例提供的方法收敛时间在2秒以下的实验占60%以上,而混合遗传算法仅为30%,收敛时间在3秒以上的,本实施例提供的方法为15%,混合遗传算法为55%。
请参阅图4,本实施例提供的方法与混合遗传算法的收敛精度情况比较图,从图4可以看出,在同等的实验环境下,本实施例提供的方法比混合遗传算法具有更高的收敛精度:混合遗传算法的收敛精度在95%左右,并且振动幅度较大(3%),而本实施例提供的方法的收敛精度基本能维持在97%以上,波动范围也减小到一个百分点以内。因此,本实施例提供的方法的收敛精度明显高于混合遗传算法。
请参阅图5,为负载均衡对本实施例提供的方法的收敛时间的影响,从图5可以看出,当不进行负载均衡处理时,本实施例提供的方法收敛速度很慢,并且很不稳定,收敛所需循环次数在10至40次之间大幅波动,这种情况显然无法满足云环境下实时动态调度的需求;而当算法加入了负载均衡之后,算法的收敛速度大大提高,所需循环次数基本维持在6次以内,而且也更加稳定。
请参阅图6,为在20个节点,6种虚拟机的情况下负载均衡对本实施例提供的方法的收敛精度的影响图,从图6中可以看出,虽然本实施例提供的方法的收敛精度已经基本达到95%以上,但是在加入了负载均衡处理之后,还是明显提高了该算法的收敛精度,基本能维持在97%以上,波动范围也减小到一个百分点以内。因此,负载均衡处理是优化本实施例提供的方法的有利工具,起到了加快收敛速度和提高收敛精度的一举两得的作用。
请参阅图7,为基于本实施例提供的任务调度方法理论资源利用率示意图,理论资源(这里指CPU资源)利用率普遍能达到90%以上,这对于当下数据中心资源利用率只有50%左右的现状来说,具有重要的应用与研究价值。
本发明实施例提供的云计算平台环境下的动态任务调度方法,首先利用排队论对任务进行排队处理,然后用人工免疫理论中的免疫克隆选择策略对集群中的计算资源进行合理配置,再利用负载均衡调整抗体基因,使得集群资源的配置更加满足任务处理的需要,本发明实施例提供的方法能适应云平台的动态变化和虚拟化的环境,快速搜索出最优配置,提高集群资源利用率。