1.一种基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述方法包括以下步骤:第一步:对于虚拟机放置问题提出以下的形式化描述,过程如下:
1.1定义放置环境,数据中心存在物理主机集合PM={pm1,pm2,...,pmn},其中主机数量为n,需要放置的虚拟机集合VM={vm1,vm2,...,vmm},其中虚拟机数量为m,假设虚拟机数量m大于或等于主机n,定义虚拟机放置组集合P={p1,p2,...,ph},h为放置组的数量;
1.2定义资源状态,对于给定的虚拟机vmi,定义 为虚拟机vmi所需的CPU资源,为虚拟机vmi所需的内存资源,Vi-pes为虚拟机vmi的CPU利用率,Wi-ram为虚拟机vmi的内存利用率;对于给定的主机pmj,定义 为主机pmj当前的CPU空闲资源, 为主机pmj的内存空闲资源,Uj-pes为主机pmj的CPU利用率,Uj-ram为主机pmj的内存利用率,则定义主机pmj的资源利用率Uj为:Uj=αUj-pes+βUj-ram
0<α<1,0<β<1,且α+β=1;
定义Tagij为当前时刻t,主机pmj能否满足虚拟机vmi的资源要求,即
1.3主机可用性,一个节点的可用性是指节点在整个服务时间内任意时刻的工作概率,对于任意网络组件i,其可用性Ai以下公式计算获得:其中MTTF代表平均故障时间,MTTR代表平均修复时间,假定服务器可用性的值是已知的,且各服务器之间的可用性是相互独立互不相关的;
1.4计算电能消耗,在一个拥有n台运行的物理主机的云数据中心,对于任意物理主机pmj∈PM,在某一时刻t的电源能耗如下公式所示:其中cj为静态能耗标记,fj(t)为t时刻主机pmj的CPU频率,CPU利用率为Uj-pes(t),k为常量系数,即电源能耗在一定程度上是基于CPU利用率的线性模型;
1.5定义虚拟机放置,VM集合通过放置组pk∈P,选择对应的物理主机集合中的主机完成放置映射,并且需要尽可能满足放置过程中的多种约束条件,定义虚拟机放置矩阵Mk[i][j],若Mk[i][j]=1则表示放置组pk将虚拟机j放置在物理主机i上,反之,若Mk[i][j]=0,表示放置组pk中,虚拟机j未放置在物理主机i上;
第二步:对虚拟机放置设定约束条件及优化目标,过程如下:
2.1在考虑范围内的约束有:服务器节点的最大使用数量最少,能耗最低,负载较均衡和放置请求的可用性较高;
2.2选取可用性及能耗两方面对虚拟机放置问题进行优化研究;
第三步:算法实现,过程如下:
步骤3.1初始化主机集合PM,虚拟机集合VM,种群规模为S,代表通过步骤3.2-3.7随机生成的放置请求组的数量,迭代次数T’,代表算法需要循环操作的次数,其中T’≥S,单虚拟机最多放置组数量H,主机节点的可用性集合A以及变异概率p,p为0到1的一个随机数;
步骤3.2主机簇群划分,首先选择一个常数z,即每个簇中的主机数为z,将主机集合按照c=ceiling(n/z),其中ceiling函数表示将n除以z的值向上舍入为最接近的整数,C0={cpm1,cpm2,...,cpmz},C1={cpmz+1,cpmz+2,...,cpm2z},...直至每个主机都归属于一个簇,每个簇为虚拟分层结构中的最底层节点;
步骤3.3虚拟叶子节点扇区以及虚拟分层结构深度确定,选择虚拟分层结构中每个子节点扇区的叶子数f,f为一位整数,选择合适的f和z会使得到的算法效益和负载均衡度等和期望较相近,根据节点扇区的叶子数f以及主机簇个数c,可以得到虚拟分层结构的深度d:fd≥c
其中d是最小正整数,使得上述公式成立;
步骤3.4各虚拟叶子节点扇区编号,采用自然编号对每个扇区分别统一编号,即从0,1,
2,...,f-1;
步骤3.5对于某一虚拟机vmi,对于任意一个虚拟节点s,都有一个对应的权重Wis=h(vmi,s),h(vmi,s)内包含约定的哈希函数,在虚拟分层结构的每一层叶子扇区,都可通过h(vmi,s)计算各虚拟节点权重,如果某虚拟节点sk的性能是其他主机的h倍,则将sk等额分成h份;显然,现在虚拟机分配到该虚拟节点sk上的概率是其他主机的h倍,将虚拟机vmi分配权重wis最高的虚拟节点继续向下分层,直到选择至最底层的真实主机节点簇Cx;
步骤3.6当虚拟机vmi选中真实主机节点簇Cx后,在进行真实节点选择时,假设对于任意在真实节点簇Cx中的主机节点cpmxz+j,都有一个对应的权重得分Wi(xz+j)=H(vmi,cpmxz+j)*Tagi(xz+j),若Tag为false,则为0,若为true默认为1;其中,将虚拟机vmi分配给主机cpmxz+j之后,H(vmi,cpmxz+j)为在相同T时间段内,Eold与分配虚拟机vmi后的真实主机节点簇Cx的总体能耗的比值,与主机pmxz+j的资源利用率Uxz+j与1的差方和对应权重常数的乘积以及主机可用性与系数乘积的和:其中Exz+j为T时间段内主机cpmxz+j的能耗,Eold是指相同T时间段内,未分配新虚拟机时,真实主机节点簇Cx的能耗,Axz+j为主机cpmxz+j的可用性;α、β、γ是表示三者的权重;
步骤3.7循环步骤3.5-3.6,将所有虚拟机vmi选择权重得分Wi(xz+j)最高的主机节点完成分配;
步骤3.8基于步骤3.2-3.7的生成种群大小为S的种群集合Xs,按主机节点簇的分组编码方式进行编码,P表示放置组,主机簇Cx对应为染色体,每个主机簇上的主机对应为基因,将操作从单个虚拟机转化为对主机簇的操作;
步骤3.9设置当前迭代次数t=0;
步骤3.10通过Random(X,Y,S)函数选择随机选择种群中两个个体进行交叉操作,Random(X,Y,S)表示在规模为S的种群中挑选出不相同的两个种群X,Y;
步骤3.11遍历每个个体,根据每个个体的变异概率p,通过Rand()函数计算一个随机数p′模拟事件发生的概率,将p′与变异概率p进行比较,若p′大于p表示个体未发生变异,跳转至步骤3.12,反之则表示个体发生变异,Rand()函数的功能为生成0到1内的一个随机数p′;
步骤3.12将交叉、变异操作得到的种群与原种群Xs合并,对于种群中的每个个体Xi根据适应度函数fT(x)计算相应的值Emin为T时间段内数据中心能耗的最小值; 为单个个体的能耗,single指单一放置,Full指完全保护放置,Partial指部分保护放置,x为数量为H的个体或者个体群;
根据适度函数选取前S个个体进入下一次迭代过程;
步骤3.13t=t+1,若t<T’,则返回到第3.10步继续迭代;否则,跳转到第3.14步;
步骤3.14根据步骤3.12的适度函数fT(x)选择权值最高的H个个体,即为虚拟机放置最优方案组vmp[H]。
2.如权利要求1所述的基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述步骤2.1中,提出以下约束条件:
2.1.1放置约束,任意虚拟机vmi,在同一放置组下,其能且只能放置在一个服务器节点上;
约束表示:
对于 其中放置组pk∈P;
同一放置组内认为单个虚拟机只能在一个服务器节点上进行部署运行;
2.1.2资源约束,对于任何服务器节点来说,其各个资源类型的消耗应不能超过上限,考虑CPU和内存的资源情况,定义服务器pmj的CPU和内存容量分别为 和 表示;
约束表示:
对于 有
参数r为常量系数,服务器节点需要预留一部分的资源保证其自身的正常运转,r≤1;
2.1.3可达性约束,定义函数F(m,n,D)用于表示节点间通信的可达性,对于任意链接(m,n)∈L,如果点m和n的通信延迟至多为D,则函数F(m,n,D)返回1,否则返回0。
3.如权利要求1或2所述的基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述步骤2.2中,优化研究的过程为:
2.2.1可用性优化
假设用户请求由具有相关通信要求的n个不同的VM对之间的虚拟机组成,将其放置在同一个服务器节点pmj不止一次不能提高放置的可用性,因为当pmj失败时,所有放置在pmj上的虚拟机将同时失败;因而,需要尽量将vmi放置在不同的节点上以增加可用性;用Hi来表示放置虚拟机vmi的最大节点数,即Hi表示vmi可以放置的最大服务器节点数量,定义用于表示该n个虚拟机中,单个虚拟机所需节点数最大为H;
2.2.2能耗优化
根据1.4中的公式,在T时间段内,物理主机pmj的总耗能 表示为:T
因此,由以下公式可得,在T时间段内,数据中心的服务器总能耗E为各运行的服务器的能耗之和;
4.如权利要求3所述的基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述步骤2.2.1中,虚拟机放置的可用性定义和计算分成三种:单一放置、完全保护放置、部分受保护放置;
2.2.1.1单一放置
单一放置指每个虚拟机都只放在一个服务器节点上,即H=1;在单一放置的情况下,如果n个服务器节点的可用性分别为A1,A2,...,An,k个虚拟机放置于此n个节点之上,n≤k,则此虚拟机放置方案的可用性采用Ap表示,定义如下:由于请求包含k个虚拟机,因此计算可用性时需要考虑k个虚拟机均在运行的概率;
2.2.1.2完全保护放置
完全保护放置指对于任意虚拟机 均由放置组pi放置在H个不同节点上,1≤i≤H;因此,认为一个完全保护放置方案P由H个单一放置方案构成,且在各个单一放置方案内,虚拟机对之间都应该满足放置、资源和通信可达性约束;
完全保护放置方案的可用性为在服务的生命周期内,存在至少一个放置组工作的概率,可用性计算如下式所示:
2.2.1.3部分保护放置
部分保护放置指存在虚拟机vmi∈VM,被放置在少于H个不同节点上,即两个或者更多个放置组将虚拟机vmi放置在相同的节点上,且存在某个虚拟机vmj∈VM,使得H>1;在部分保护的放置情况下,若一个虚拟机放置在少于H个节点上,可以认为这个虚拟机由多个放置组共同放置;无法直接通过2.2.1.2中的公式计算其可用性,因为放置了共享的虚拟机的服务器节点的可用性会被计算两次;为了处理该类放置情况,重新定义操作符,假设存在n个节点pm1,,pm2,...,pmn,它们的可用性分别为A1,A2,...,An,对于可用性为Ax的节点pmx,给出如下关于操作符的定义:则根据上述的公式,定义 为不同集合的操作,部分保护放置的可用性通过如下公式计算获得:
5.如权利要求1或2所述的基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述步骤3.10中,交叉操作的过程如下:步骤3.10.1根据Random(X,Y,S)函数挑选两个需要交配的父代,命名为X、Y,随机挑选X父代中包含一个或多个基因的某一节点簇作为需要交叉的部分,将该节点簇即其中所有基因插入到Y父代交叉点位置中,此时,将会产生包含X、Y父代基因的新的子代;
步骤3.10.2在完成基因插入之后,由于使用基于主机簇的染色体分组编码方式,可能会出现相同的主机簇,若出现该种情况,则将插入的基因合并到原先的主机簇中;
步骤3.10.3若出现不同的主机节点上存在相同的两个虚拟机的情况,将先前包含相同的虚拟机的主机,根据步骤1.2中的公式剔除利用率较低的主机节点;
步骤3.10.4被暂时的剔除主机节点上,可能包含未被其他主机部署的虚拟机节点,针对这种情况,需要为这些虚拟机,通过循环步骤3.5-3.6,将剔除的虚拟机重新编码至主机节点中,并选择染色体中使得满足约束条件的且能耗最低可用性最高的基因完成分配;
步骤3.10.5若所有基因均不符合要求,则按照步骤3.2-3.7重新生成新基因片段,通过Random(X,Y,S)函数选择重新需要互换两个父代个体,跳转执行步骤3.10.1。
6.如权利要求1或2所述的基于改进遗传算法的虚拟机初始放置策略方法,其特征在于,所述步骤3.11中,变异操作的过程如下:步骤3.11.1通过变异函数来确定需要变异的个体染色体基因,如下公式所示:其中Uj-pes、Uj-ram分别为主机的CPU、内存利用率;
步骤3.11.2选择fc(j)较小的基因进行删除,使得每次删除的都是利用率较低的较差基因;
步骤3.11.3然后将该基因上的虚拟机通过步骤3.10交叉操作的方法重新进行编码插入到其他基因中。