本发明涉及云平台下计算单元调度技术以及一种人工智能的调度方法,具体的讲是一种可同时优化多目标的计算单元的调度方法。
背景技术:
分布式计算中的计算单元调度是指根据某一调度算法将用户申请的一组计算单元映射到物理机(即服务器或物理节点)上,并且同时要满足必要的约束条件。云数据中心计算单元与物理机的不同映射带来的电能耗费、资源利用率、用户体验,以及云提供商收益等。因此,设计一种有效的调度算法非常重要。随着数据中心规模不断扩大,其所消耗的电能快速增长,越来越多的研究将计算单元调度问题的焦点集中在节约能耗上,现有方式一般是通过聚合服务器的方式实现,通过遗传算法将计算单元放置在数量较少的物理机上,最小化激活物理机的数量以达到节能的目标。这种方式在节能方面确实是有效的。然而,当物理机上的任务过于聚集时会造成物理机负载过重,用户应用程序性能下降,带来较差的用户体验。所以,在考虑节约电能消耗的同时不能忽略了用户服务质量。同时,提高物理机资源的均衡利用,也是提高数据中心效率,减少资源浪费的有效途径。
目前遗传算法解决计算单元调度问题至少存在以下几个缺点:1)算法性能较依赖参数的选取,参数选择不当将会严重影响解的优劣。2)交叉概率与变异概率在种群进化过程中固定不变,严重影响种群的收敛性以及易造成早熟而达不到全局最优解。3)算法中交叉运算和变异运算随机地选取染色体上的基因,具有盲目性,影响算法的收敛速度。4)适应度函数在评价多目标优化问题时,将多个目标线性求和转化成单目标问题,与实际中多个目标对问题的影响程度不确定这一事实不相符。
技术实现要素:
本发明提供了一种计算单元的调度方法,以优化用于云数据计算的服务器的多种运行数据,使服务器集群在节约能耗的同时也能够保证运行质量,提高服务器资源均衡性和计算效率,并且比现有的单目标优化更具有实用性。
本发明计算单元的调度方法,步骤包括:
S1.输入物理机资源:确定物理机的数量以及各物理机所拥有的资源种类及其容量,例如CPU、内存、带宽、存储等都可看作是物理机拥有的资源;
S2.输入用户需求的计算单元资源;
S3.通过数据模型对优化目标进行公式化描述;
S4.通过分组遗传算法对计算单元进行调度:首先确定基因编码方式,然后通过随机方法生成多组计算单元部署方案,将每个计算单元部署方案对应为分组遗传算法中的一个个体,利用分组编码方式将计算单元与物理机之间的映射关系转换成分组遗传算法中的基因编码,所有与计算单元部署方案对应的个体组成分组遗传算法中的初始种群;再通过计算所述初始种群中每个个体的适应度值、通过每个个体的选择概率选择遗传到下一代的个体、根据每个个体的交叉概率和变异概率对相应的物理机进行交叉运算和变异运算,之后生成子代种群,子代种群中适应度值最小的个体为分组遗传算法的最优解;
S5.输出与最优解对应的计算单元部署方案。
通过对现有分组遗传算法的改进,使计算单元在物理机的调度上更均衡,使整个物理机集群的整体能耗最小,并且保证良好的计算效率。
进一步的,步骤S2中所述的计算单元资源包括计算单元的请求数量和每个计算单元的资源种类以及资源容量。由于通常在分布式计算中是采用网络附属存储,因此在资源种类一般只关注物理机的CPU和内存,不考虑磁盘,但可以根据实际情况做相应的调整。
在上述基础上,一种优选的方法是在步骤S4中,通过模糊逻辑理论以最大化最小满意度的方式计算所述初始种群中每个个体的适应度值。并且还可以通过轮盘赌算法计算所述每个个体的选择概率,以及以自适应算法确定个体的交叉概率和变异概率,计算个体中各物理机评价值,对所述评价值升序排列,选择评价值最大的物理机进行交叉运算和变异运算。
个体的适应度值是根据适应度函数计算,适应度函数是遗传算法中优胜劣汰的选择标准,为克服实际应用中多个优化目标对所要解决的问题的影响程度的不确定性,通过模糊逻辑理论对多个优化目标进行整合和量化评估,采用最大化最小满意度模糊逻辑模型对三个优化目标进行模糊化处理。然后通过遗传算法模仿生物进化原理采用选择运算对个体进行优胜劣汰,适应度高的个体被遗传到子代的概率较大,适应度低的个体被遗传到子代的概率较小。但若仅选择适应度高的个体进行遗传会陷入局部最优解,因此本发明采用轮盘赌算法选择遗传的个体。
为使最后的调度方案最优化,当步骤S4中生成子代种群后,先判断当前的迭代次数是否达到算法设置的最大次数,若已达到则停止迭代,执行步骤S5;若未达到最大数则返回至所述选择遗传到下一代的个体步骤起循环执行。
具体的,步骤S3中所述的优化目标包括物理机的最小化电能消耗、最小化资源利用率以及最小化SLA(服务等级协议)违背率,也可以根据实际需求包括其它相应的优化目标。
本发明计算单元的调度方法,通过改进的分组遗传算法,解决了多目标优化过程中多个优化目标影响程度的不确定性问题,相比单目标优化更具有实用性。非常明显的加快了调度计算的收敛速度,使服务器集群在大幅度节约能耗的同时,也保证了运行质量,显著提高了服务器资源的均衡性和计算效率。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明计算单元的调度方法的流程图。
图2为图1中分组遗传算法流程图的流程图。
图3为本发明中分组编码方式的示意图。
具体实施方式
如图1所示本发明计算单元的调度方法,步骤包括:
S1.输入物理机资源,包括云数据中心的物理机数量,任意一台物理机的可用资源种(如CPU、内存、带宽、存储等)类数记作,则Hi,j表示第i台物理机Pi的j类资源的容量。
S2.输入用户申请的计算单元资源,包括计算单元的数量,任意一个计算单元的需求资源记作Ri,j,表示第i个计算单元Vi对第j类资源的需求数量。本发明中计算单元申请的资源中只关注CPU(处理器)和内存,不考虑磁盘,因为在分布式计算中一般采用网络附属存储(network-attached storage,NAS),存储可作为一个单独的模块。
S3.公式化建模。本实施例的目的是通过一种计算单元调度算法,实现将一组计算单元均衡合理的映射到云数据中心的物理机上,使得在满足物理机资源约束的同时达到最小化电能消耗、最小化资源浪费、最小化SLA(服务等级协议)违背率的目标。在设计调度算法之前,需要对三种优化目标进行公式化描述,具体如下:
S31电能消耗:电能消耗是指数据中心物理机的电能消耗,其中CPU对物理机功耗影响贡献最大占据了大部分的能耗,本发明仅考虑CPU对功耗的影响,根据已有文献可知,当物理机从零负载(0%)到满负载(100%)这个区间变化时,物理机功耗与CPU利用呈线性关系,而物理机在零负载时所消耗的电能是满负载时消耗电能的67%,物理机的功耗Pi可计算为:其中,Pmax表示物理机满负载时的功耗,Pidle表示物理机空闲时的功耗,为第i台物理机的CPU利用率。
S32.资源利用率:数据中心每个物理机的各种资源(例如CPU、内存、存储空间等资源)使用率应尽量保持平衡,避免因为木桶效应而造成资源浪费,降低资源利用率,物理机的资源浪费率Ri表示为:
其中,为第i台物理机剩余的CPU资源与总的CPU资源的比值,即CPU剩余率,表示该物理机的内存剩余率,ε的取值范围是0~0.001,为该物理机的CPU利用率,为该物理机的内存利用率。
S33.SLA违背率:分布式计算中,云提供商需和用户签订SLA,其中定义服务质量,用户付款等事项,计算单元分配的服务质量一般以用户应用性能进行考量,云提供商须为用户分配与需求相当的资源才可保证其性能。SLA违背率定义为CPU利用率的函数,SLA违背率的评价函数fi表示为:其中,为第i台物理机的CPU利用率,为CPU利用率的最大阈值。
计算单元调度的优化目标表示为:最小化电能消耗最小化资源浪费最小化SLA违背率
S4.如图2所示,采用改进的分组遗传算法解决该多目标优化的计算单元调度问题。包括以下步骤:
S41.基因编码。结合计算单元调度问题中的计算单元与物理机之间的映射特点采用分组编码方式。将物理机看作遗传算法中染色体的基因,将部署在物理机的计算单元看作是基因的值。例如图3所示的分组编码方式示意图,假设将7个计算单元部署到了3台物理机上,一台物理机代表一个染色体的编码,一个计算单元编号代表对应染色体上的基因值。在设置染色体编码时,除必须满足所要解决问题的约束条件外,还必须满足任意一个基因只能出现在一个染色体上,所有基因必须全部映射在染色体上,但可以出现没有基因的染色体。例如图3中染色体的编码是ABC,按照上述原则设置染色体的编码方式为A:123,B:45,C:67。这样就可以解决传统编码方式中的对分组信息不明确的问题,即当交叉和变异时,可以对计算单元进行操作,对服务器信息透明。而传统的二进制编码方式是将每个个体用一串固定长度的二进制数表示,在进行交叉、变异操作时只能以个体为单位进行操作,不能反映所求问题的结构特征和特定信息。
S42.产生初始种群。采用随机算法生成确定数量的计算单元部署方案,即将用户请求的计算单元随机映射到物理机上,前提条件是物理机的资源容量必须大于计算单元请求的资源容量。根据S41的分组编码方式将计算单元与物理机之间的映射关系转换成分组遗传算法中的基因编码,每个计算单元部署方案对应算法中的一个个体,所有计算单元部署方案对应的所有个体组成了分组遗传算法的初始种群;
S43.计算适应度值。个体的适应度值根据适应度函数计算,适应度函数是遗传算法优胜劣汰的选择标准,为克服实际问题中多个优化目标对问题的影响程度的不确定性,通过模糊逻辑理论对多个优化目标进行整合和量化评估,采用最大化最小满意度模糊逻辑模型对三个优化目标进行模糊化处理。具体步骤为:
T431.求解各单目标的最优解,为了明确最终解在各个优化目标是否表现良好,首先需要求解各个单目标的最优解。
首先,将物理机数量的最小值记作Lmin。
其中,其中Rall-cpu,Rall-mem分别表示数据中心所有计算单元申请的CPU资源总合和内存资源总和,Hcpu,Hmem分别表示单台物理机所拥有的CPU资源和内存资源。物理机数量的最大值记作Lmax=N,其中N表示计算单元的个数。
电能消耗的最小值表示为:W*=Lmin·Pmax;电能消耗的最大值表示为:Wmax=Lmax·Pmax,Pmax表示物理机满负载时的功耗,。
资源浪费的最小值表示为:其中Hcpu-all,Hmem-all分别表示数据中心所有物理机CPU资源总和与内存资源总和。资源浪费的最大值表示为:其中Ri,cpu,Ri,mem分别表示第i个计算单元申请的CPU资源和内存资源,Hi,cpu,Hi,mem分别表示第i台物理机的CPU资源与内存资源。
SLA违背率的上限与下限根据SLA违背率的评价函数fi决定。
T432.构造隶属函数。隶属函数反应优化目标的优劣程度,隶属度越小表示解越不能接受,为0则表示完全不能接受,为1则就是理想值,一般这种情况是不可能出现的。
三个优化目标的隶属函数表示为:
其中,μ(fi(x))表示第i个优化目标的隶属度值,x表示计算单元部署方案,W*+δ1是电能消耗的最大值,同理,R*+δ2,F*+δ3分别表示资源浪费的最大值与SLA违背的最大值,δi表示理想值(最小值)与最大值的差值,F*为SLA违背的最小值。
T433.构造适应度函数。遗传算法中适应度函数决定了种群进化的方向,因此该函数是否适宜直接决定了算法的最终解是否是最优解。采用最大化最小满意度方法确定适应度函数,该方法使所有目标函数都有尽可能高的隶属度,适应度函数表示为:μ(x)=min{μ1(x),μ2(x),μ3(x)},μi(x)为三个优化目标的隶属函数值。则该多目标优化计算单元调度转化为使μ(x)最大化的单目标优化问题:
其中s.t.表示约束条件。
S44.选择运算。遗传算法模仿生物进化原理采用选择运算对个体进行优胜劣汰,适应度高的个体被遗传到子代的概率较大,适应度低的个体被遗传到子代的概率较小。但若仅选择适应度高的个体进行遗传会陷入局部最优解,所以这里采用轮盘赌算法选择遗传的个体。
首先,根据步骤S2计算种群中所有个体的适应度值μ(xi),1≤i≤m,m为种群规模,计算种群的适应度总和,则个体xi的选择概率为p(xi),表示了第i种计算单元部署方案的选择概率,p(xi)为:
计算个体的积累概率,
采用轮盘赌算法随机生成(0,1)的随机数r,与个体的遗传概率进行匹配以确定各个个体是否被子代继承。若qi-1<r≤qi,则第i个个体将被遗传到下一代。这种选择运算可避免因仅选择适应度高的个体进行遗传所造成陷入局部最优解的缺陷。
S45.交叉运算,交叉运算是两个染色体以一定的交叉概率交换部分基因形成新的染色体个体,是遗传算法产生新个体的主要步骤,目的是希望优秀的基因能被遗传到子代中,交叉运算步骤为:
T451.自适应计算交叉概率。交叉概率对整个算法的性能和效率有着极为重要的影响,对算法的收敛性也至关重要,交叉概率越大产生的新个体就会越快,同时对遗传模式的破坏的可能性也会更高;另一方面,交叉概率越小,会让整个搜索过程变得缓慢,甚至停滞不前。采用自适应的方法确定交叉概率,交叉概率随适应度自动改变,当种群各个体适应度趋于一致或趋于局部最优时,使交叉概率增加,当群体适应度比较分散时,使该解得以保护进入下一代,自适应确定交叉概率的方法在保持群体多样性的同时,保证遗传算法的收敛性。
交叉概率Pc表示为:
其中,fmax表示种群中最大的适应度值,favg表示种群中所有个体的平均适应度值,fc要交叉的两个个体中较大的适应度值,k1,k2取(0,1)之间的值,在运算过程中进行调整。根据步骤S44生成的种群个体,随机地对种群中的个体进行两两配对,依次选择其中一对个体,生成随机数r,若Pc>r,则对选中的个体进行交叉运算,否则直接进入S46。
T452.根据物理机评价值确定交叉点。交叉运算中确定交叉概率之后,需要选择交叉点。以基因中的物理机资源浪费程度和SLA违背率为依据判断哪段基因将被交叉。未选择物理机的电能消耗作为判断依据的原因是SLA违背率与电能消耗都与CPU利用率有密切的关系且变化趋势接近,并且单台物理机电能消耗的大小不能反映该物理机上部署方案的优劣程度。根据S32和S33步骤计算物理机的资源浪费程度以及SLA违背率,两者的加权和即为个体中物理机的评价值,对评价值升序排序选择值小的物理节点进行交叉操作。
T453,实施交叉运算。假设两个父代染色体X,Y进行交叉运算,将染色体X中的交叉点插入染色体Y中,此时若染色体Y在多个物理机中出现重复计算单元的情况,则将出现重复计算单元的物理机删除,而删除操作又可能造成某些计算单元未被分配物理机的情况,则需要为未分配的计算单元重新编码到物理机中。同理,将染色体Y中的交叉点插入染色体X中。交叉运算之后将生成两个新的子代染色体。
S46.变异运算,基本遗传算法中变异运算是在染色体个体随机选择一位或多位基因进行变异,以避免陷入局部最优解,保持种群多样性。变异概率的选取对遗传算法的性能和收敛性至关重要,变异概率过小,就不易产生的个体结构,变异概率过大,遗传算法就成了纯粹的随机搜索算法,变异运算的步骤为:
T461.自适应计算变异概率。当个体适应度值大于平均个体适应度值时,选择较小的变异概率,尽量保留优秀基因,反之,选择较大的变异概率。自适应计算变异概率Pm如下:
其中,fmax表示种群中最大的适应度值,favg表示种群中所有个体的平均适应度值,fm表示要变异个体的适应度值,k3,k4取(0,1)之间的值。在运算过程中进行调整。根据步骤S45得到的种群个体,依次选择种群中的个体,根据自适应变异概率的计算公式计算其变异概率,生成随机数r,判断是否变异概率Pm>r,若是则对选中的个体进行变异操作,否则直接进行S47。
T462.根据物理机评价值确定变异点,根据T452计算得到的物理机评价值,选择评价值最大的物理机作为变异点。
T463.实施变异运算。变异方式为随机变异,即在确定的物理机上改变原有计算单元中的一个或多个改变,变异之后在整个个体中可能出现重复的计算单元,此时将重复的计算单元删除,此时若出现未部署的计算单元,则将其按照最佳适应算法重新编码到物理机上。
S47.生成子代个体,经过上述步骤之后生成新的子代种群,若此时迭代次数已经达到了最大次数,则当前种群中适应度值最小的个体即为算法的最优解,算法结束;若未达到最大迭代次数,则跳至步骤S44循环执行。
S5.将最优解个体的染色体编码转换为对应的计算单元部署方案,转化方式以图3计算单元部署方案为例,该计算单元部署方案在算法中对应一个7行3列的矩阵,如下所示:
为1的位置表示计算单元i部署到物理机j上,输出转化后的矩阵,即输出计算单元部署方案。