云计算的资源分配现状云计算的资源分配是指在一个共同的云环境中使用者根据一定是使用规则来调度资源的过程。
目前云计算资源调度的研究主要集中在三个方面:(1)人工智能算法人工智能算法是指以学习的方式对解空间进行人工搜索,以减少任务的平均时间,提高资源的利用率(2)云计算的负载均衡不同的用户对云计算有不同的需求,云计算必须满足服务器网络带宽、吞吐量、延迟和抖动等负载需求。
因此,在进行云计算时,更应该注意云计算的负载均衡。
(3)云计算的能耗管理数据中心作为云计算的中心,能耗过大,不仅浪费电能,还会降低系统的稳定性,影响环境。
因此,加强云计算能耗管理也是云计算资源配置中需要解决的重要问题。
本章小结本章对于多目标优化、遗传算法、SPEA-II做出了详细的基础知识介绍,通过数学模型以及流程图对于该问题进行了解析分析。
通过此小结可大致了解多目标问题的优劣端以及如何利用遗传算法和SPEA-II进行修饰,避免局部最优解,从而获得优秀的目标最优解集。
基于改进 SPEA-II动态资源配置资源调度方案的实现通过分组编码和多目标优化模型可知,根据遗传算法在交叉和突变阶段提出的TMR,便可以指出基因的类型及其在染色体上的分布。
选择已经分层的Pareto前沿时,使用预筛选操作来维持种群分布的均匀性。
当达到一定的进化代数时,上一代种群中平均功耗最低的个体被输出。
MOGAISP可以采用自适应概率突变和交叉概率突变进行遗传操作,以帮助我们防止遗传算法进化的过程陷入局部停滞的状态,保持遗传算法种群的多样性,提高了遗传算法进化和全局最优搜索的速度和能力。
MOGAISP选择机制选择EFP种群的最优个体,使EFP种群中的个体尽可能均匀地分布在多维目标空间中,从而减少进化过程中陷入局部最优的可能性。
通过改进轮盘赌注的选择策略从EFP种群中随机选择遗传的子代,尽量避免仅选择较优个体进行遗传而陷入局部最优解的缺陷,以提高遗传个体的种群多样性和加速遗传算法的全局搜索能力和速度进化。
TMR规则物理节点上的虚拟机迁移过程可以被视为一个包装的问题,将项目(虚拟机)的合理的装入每个盒子(物理节点)中,项目的大小代表了资源使用的虚拟机大小,容量的盒子是使用资源物理节点阈值,每个负载都会对应一个资源调度方案。
本设计所涉及的物理节点的资源为CPU,因此建立了虚拟机的折线图如图3.1所示。
从图中可以看出,横坐标为CPU,纵坐标为容量,即资源大小。
由于不同的应用程序和不同类型的资源对所需要的应用程序的需求不同,当4台虚拟机在物理节点上运行时,不同纬度的节点资源呈现下降趋势,但下降程度不同。
多目标优化模型的建立物理节点物理网络节点是一个连接到网络的有源的电子设备,是可以通过通信通道发送、接收或转发信息。
而在优化模型中,物理节点的多少是一个重要的参考点。
本文用0,1的二维矩阵来模拟单个物理节点在每一时刻每一个虚拟机的位置。
0表示每一时刻每一虚拟机的位置,1表示激活的物理节点。
从第一个物理节点到最后一个物理节点,第一个时刻到最后一个时刻时,随着虚拟机的个数的改变,对相对应的二维矩阵里的列项进行加和,如果大于0,则记录为1,,最后再次进行加和处理便可得到激活的物理节点数目。
假定云平台中物理节点的个数为M ,虚拟机的个数为N ,多个应用虚拟机可以同时分布在一个物理节点上,单个物理节点的CPU 数量为CP 。
目标函数为:max x 'T (3.6)其中:,,i ,'i j i j f j i X X if j i ⎧=⎨⎩虚拟机在物理节点上运动虚拟机不在物理节点上运动(3.7)用实际云环境中的资源负载数据来模拟未来一段时间内虚拟机的应用负载的预测数据。
X 表示物理节点的分布模式,X T '为新分布模式迁移后X '的稳定时间。
根据当前虚拟机在物理节点上的初始分布方式 ()()N M x X X j i ⨯=.和动态变化的负载预测信息,以系统虚拟化技术和虚拟机实时迁移技术为基础,来寻求一种最优的虚拟机在物理节点上的新分布方式()()N M x X X j i ⨯'=''.。
X '使用的活动物理节点比初始分布X 少。
虚拟机迁移次数计算虚拟机的迁移次数,本文用了循环判断的方式进行。
从第一时刻到下一时刻,判断虚拟机的位置与上一次位置是否相同,若相同,则证明虚拟机没有迁移,若不相同,则证明虚拟机已迁移,记录1次,往后依次递增,最后进行加和处理,便可得出虚拟机迁移的总次数。
目标函数为:1min 'Mi i y =∑ (3.8)其中:⎪⎩⎪⎨⎧='>'='∑∑==Nj ijN j ij ix if x if y 110,00,1(3.9)式中i y '标识在新分布方式X '中物理节点i 是否处于激活状态。
j q 表示虚拟机迁移结束后得到的新分布方式X '中虚拟机j 是否发生了迁移。
公式(3.9)表示物理节点i 处于激活状态时则i y '值为1,否则值为0。
公式(3.7)标识虚拟机j 发生迁移与否。
虚拟机稳定时间虚拟机的稳定时间是从当前时刻开始一直到虚拟机超负荷之前,虚拟机当前的位置与下一时刻位置是否相同。
若相同,则记录为1,往后依次增加,若不相同,则不记录。
加和处理统计数据。
当目标函数迁移次数越小时,则证明虚拟机的稳定时间越久。
目标函数为:1min Ni i q =∑ (3.10)其中:1,101i j j i j if x and i i q if x and i i ''''==⎧⎪=⎨'=≠⎪⎩,(3.11){}{}{}N j M i y q x i j ij,...,2,1,,...,2,11,0,1,0,1,0==∈'∈∈'(3.12)公式(3.11)标识虚拟机j 发生迁移与否。
公式(3.12)说明变量i j ijy q x ''、、和都是布尔变量。
约束条件约束不符合要求的编码基因有助于统计所需数据的准确性和规范性。
将每一时刻的物理节点位置和所需虚拟机的数量进行乘积与物理节点初始二维矩阵相乘,得到新的所需虚拟机数量,此时若虚拟机新的需求数量的数量大于原始需求数量,则进行约束,将此物理节点的目标函数值加一个很大的数值,防止干扰原始数据。
约束条件:M i C x CP jNj ij ,...,2,11=≥∑= (3.13)N j x Mj ij,...,2,111=='∑= (3.14)组编码方式编码是一种遗传描述,它将云计算平台上的物理节点和虚拟机转换成染色体和基因,即模拟从问题求解到染色体和基因映射到生物进化的过程。
MOGAIN 使用编码方法来表达基因类型及其在染色体上的分布。
此外,在组编码模式中,每个染色体(也称为个体)对应于资源调度解决方案。
每个个体上的每个基因代表一个特定的激活物理节点及其虚拟机。
该基因具有与其对应的物理节点相同的资源负载类型。
多个基因序列形成一个染色体或个体,多个个体形成一个群由于不同虚拟机分配模式所包含的物理节点数量可能不同,而相同的多台虚拟机可能放置在不同数量的物理节点上,相应的个体长度也不同,因此不同长度的染色体也应该是遗传算子。
种群初始化MOGAINS原始分布应该包含当前虚拟机集合上所有物理节点的编码信息,原始分布的初始集合在虚拟机负载信息资源和物理节点随机映射生成的前提下,是没有方向性的,这样便能保证初始分布集合的多样性,提供更大的搜索空间。
染色体的生成MOGAINS操作符可以识别染色体的过程如算法3.1所示。
算法3.1 染色体的生成1)chromo_size =ceil(log2(m/eps+1));2)各个染色体长度的数据3)pop = cell(pop_size,t)4)初始化参数并且保存种群各个变量的染色体,100*时间根矩阵5)pop_int = cell(1,pop_size)6)利用模拟染色体来解码数据7)这块主要用于计算适应度8)for i=1:pop_size9)for j=1:t10)pop{i,j} = initilize_pop(n, chromo_size)11)初始化种群(随机数)100*t个包12)每个矩阵都是8个虚拟机位置的染色体13)end14)end进化算子MOGAINS是通过虚拟机在物理节点之间映射的初代分布并且生成种群规模大小的染色体后产生初始种群,然后基于动态变化的应用负载信息对初始种群中的染色体进行遗传操作来寻找虚拟机在物理节点上最优的新分布方式X 。
轮盘赌注轮盘赌注算法的思想是个体被选中的概率与其适应度函数值成正比。
首先计算适应度比例,即每个个体的选择概率。
然后计算每个个体的累积概率,相当于转盘上的“跨度”,“跨度”越大越容易选到,在每个个体之前,所有个体的选择概率之和等于概率论中的概率分布函数。
相当于概率论中的概率分布函数。
可以随机生成一个数组,然后将他们有序排列,如果累积的概率大于随机生成序列,则被选择并且将继续比较,若小于,则不选择,此时再比较下一个个体。
具体的运算方法如表3.2所示。
算法3.2基于轮盘赌注法的选择操作1)FIT1 =1./Fit;2)sum_Fit=sum(FIT1); 总的适应度3)fitvalue=FIT1./sum_Fit; 每个适应度占比4)fitvalue=cumsum(fitvalue); 累计占比5)ms=sort(rand(pop_size,1)); 产生0-1随机数6)fiti=1; 初始化下标7)newi=1; 累计选择优秀下标8)nf = cell(pop_size,t);9)while newi<=pop_size10)if(ms(newi)<fitvalue(fiti))11)for im = 1:1:t12)for jm=1:1:n13)nf{newi,im}(jm,:)=pop{fiti,im}(jm,:);14)end15)end16)newi=newi+1 ;17)else18)fiti=fiti+1;19)end20)end交叉交叉遗传算子的主要功能是将优良基因直接传递给后代,而交叉遗传算子的位置变换极大地增加了种群的生物多样性,这也决定了遗传算法的全局分析和搜索能力。
如果使用单一的交叉方法来执行父代和子代个体之间的交叉概率,那么在概率不变的情况下,交叉将是重复的。
当某些物理节点上没有虚拟机时,仍然可以执行交叉操作,并且可以在不同长度的染色体之间执行交叉操作。
变换位置的运算方法如表3.3所示。
算法3.3 基于概率的交叉操作1)for i=1:2:pop_size2)p=rand;3)随机生成一个交叉的概率4)if p<Pc5)for im = 1:1:t6)for pm=1:1:n7)q=randi(,1,chromo_size);8)for j=1:chromo_size9)if q(j)==1 表示交叉点10)交换位置即交叉11)temp=nf{i+1,im}(pm,j);12)nf{i+1,im}(pm,j)=nf{i,im}(pm,j);13)nf{i,im}(pm,j)=temp;14)end15)end16)end17)end18)end19)end20)基于概率的进化逆转将一条染色体上某两个点进行交换位置21)for im = 1:1:t 索引各个时间22)for i = 1:pop_size23)索引各个种群24)for k=1:1:n25)r1 = rand(1,1); 逆转概率26)if r1<Pn27)index = randperm(chromo_size,2); 两个位置倒位28)交换位置29)temp = nf{i,im}(k,index(1));30)nf{i,im}(k,index(1)) = nf{i,im}(k,index(2));31)nf{i,im}(k,index(2)) = temp;32)end33)end34)end35)End36)clear pop 清空上一步种群37)pop = nf; 产生新种群变异突变算子是生成新种群个体的重要辅助方法之一。