1.一种云计算环境下基于VHAM‑R模型的虚拟机放置遗传优化方法,其特征在于,所述方法包括以下步骤:
第一步:对于虚拟机放置问题提出以下的形式化描述,过程如下:
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,且α+p=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.1.1放置约束,任意虚拟机vmi,在同一放置组下,其能且只能放置在一个服务器节点上;
约束表示:
对于 其中放置组pk∈P;
同一放置组内,都认为单个虚拟机只能在一个服务器节点上进行部署运行;
2.1.2资源约束,对于任何服务器节点来说,其各个资源类型的消耗应不能超过上限,定义服务器pmj的CPU和内存容量分别为 和 表示;
约束表示:
对于 有
参数r为常量系数,
服务器节点需要预留一部分的资源保证其自身的正常运转,r≤1;
2.1.3可达性约束,定义函数F(m,n,D)用于表示节点间通信的可达性,对于任意链接(m,n)∈L,如果点m和n的通信延迟至多为D,则函数F(m,n,D)返回1,否则返回0;
2.2虚拟机放置问题的优化目标众多,选取可用性及能耗两方面对虚拟机放置问题进行优化研究;
2.2.1可用性优化
假设用户请求由具有相关通信要求的n个不同的VM对之间的虚拟机组成,将其放置在同一个服务器节点pmj不止一次不能提高放置的可用性,因为当pmj失败时,所有放置在pmj上的虚拟机将同时失败,因而,需要尽量将vmi放置在不同的节点上以增加可用性;用Hi来表示放置虚拟机vmi的最大节点数,即Hi表示vmi可以放置的最大服务器节点数量;定义用于表示该n个虚拟机中,单个虚拟机所需节点数最大为H;
虚拟机放置的可用性定义和计算可以分成三种:单一放置、完全保护放置和部分受保护放置;
2.2.1.1单一放置
单一放置指每个虚拟机都只放在一个服务器节点上,即H=1,在单一放置的情况下,如果n个服务器节点的可用性分别为A1,A2,...,An,k个虚拟机(n≤k)放置于此n个节点之上,则此虚拟机放置方案的可用性可用Ap表示,定义如下:由于请求包含k个虚拟机,因此计算可用性时需要考虑k个虚拟机均在运行的概率;
2.2.1.2完全保护放置
完全保护放置指对于任意虚拟机 均由放置组pi(1≤i≤H)放置在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,给出如下关于操作符·的定义:
则根据上述中的公式,定义 为不同集合间的·操作,保护放置的可用性通过如下公式计算获得:
2.2.2能耗优化
根据1.4中的公式,在T时间段内,物理主机pmj的总耗能 表示为:T
因此,由以下公式得,在T时间段内,数据中心的服务器总能耗E为各运行的服务器的能耗之和:
第三步:创建模型
基于第二步中给出的虚拟机放置的约束条件和优化目标,建立基于Rendezvous哈希算法的虚拟分层结构模型VHAM‑R,用于优化和决策虚拟机对主机的选择过程,步骤如下:
3.1初始化主机集合PM,虚拟机集合VM,虚拟机最多放置组数量H,主机节点的可用性集合A,若主机数量n小于4进入步骤3.2,否则进入步骤3.3;
3.2主机数量n小于4,即无法满足构建最小双层虚拟结构的数量2*2时,定义其对应每个主机具有一个分配权重得分集合Wi={wi1,wi2,...,wik}其中,k≥n,定义wij为虚拟机vmi在主机pmj上的权重得分,wij=h(vmi,pmj),其中函数h(vm,pm)为Rendezvous哈希算法中约定的哈希函数,然后通过h(vmi,pmj)将虚拟机vmi分配给权重wij最大的主机pmj,如果主机pmk的性能是其他主机的h倍,则将pmk等额分成h份,现在虚拟机分配到该主机上的概率是其他主机的h倍;
3.3主机数量n≥4,对主机簇群划分,首先选择一个常数z,即每个簇中的主机数为z,将主机集合按照c=ceiling(n/z),其中ceiling函数表示将n除以z的值向上舍入为最接近的整数,C0={cpm1,cpm2,...,cpmz},C1={cpmz+1,cpmz+2,...,cpm2z},...直至每个主机都归属于一个簇,每个簇为虚拟分层结构中的最底层节点;
第四步:基于VHAM‑R模型的遗传算法操作改进,过程如下:
4.1为求解虚拟机放置到服务器节点的过程,提出基于主机节点簇的分组编码方式,P为放置组表示个体,Ci表示主机簇Ci对应为染色体,每个主机簇上的主机对应为基因;
4.2选择操作通过自己设定的适应度函数,对种群中含有优良基因的个体进行选择,以数据中心能耗以及虚拟机放置可用性为优化目标;选择操作的过程为:
4.2.1当H=1时,对于每个个体,都对应了一种虚拟机放置情况,因此,其可用性按照单一放置进行计算,即对于个体P,其放置可用性 其中该个体包含n个基因;
4.2.2当H>1的情况时,对于该H个个体的可用性需要按照受保护放置的计算方式来处理;
4.2.2.1对于任意虚拟机vmi∈VM,均由放置组pi放置在H个不同节点上,1≤i≤H,即对于H个个体,每个基因上的各个虚拟机均不相同,此情况下,该H个放置组的可用性按照完全保护放置的计算方式来处理;
4.2.2.2若存在虚拟机vmi∈VM,两个或者更多个个体中,虚拟机vmi被放置在相同基因上,此情况下,该H个放置组的可用性按照部分保护放置的计算方式来处理;
4.2.3结合数据中心能耗优化,给出以下遗传算法的适应度函数:其中,Emin为T时间段内数据中心能耗的最小值; 为单个个体的能耗;当H=1时,可用性以单一放置方式计算;当H>1时,可用性计算分为完全保护放置和部分保护放置,其中x为数量为H的个体群;对于个体或个体群x,若能使数据中心能耗越低、可用性越高,则适应度函数的值就越大,优良基因遗传到下一代的被选择概率越高;
4.3遗传算法中的交叉操作是模拟生物界中个体之间的交配过程,通过交配达到父代之间基因的重组,从而使子代获得包含优秀基因的新染色体,产生更优秀的后代;交叉操作的过程为:
4.3.1首先挑选两个需要交配的父代,命名为X、Y,随机挑选X父代中包含一个或多个基因的某一节点簇作为需要交叉的部分,将该节点簇即其中所有基因插入到Y父代交叉点位置中,此时,将会产生包含X、Y父代基因的新的子代;
4.3.2在完成基因插入之后,由于本发明使用基于主机簇的染色体分组编码方式,可能会出现相同的主机簇,若出现该种情况,则将插入的基因合并到原先的主机簇中;
4.3.3若出现不同的主机节点上存在相同的两个虚拟机的情况,将先前包含相同的虚拟机的主机节点暂时从染色体编码中剔除;
4.3.4被暂时的剔除主机节点上,可能包含未被其他主机部署的虚拟机节点,针对这种情况,需要为这些虚拟机重新编码至主机节点中,选择染色体中使得满足约束条件的且能耗最低可用性最高的基因完成分配;
4.3.5若所有基因均不符合要求,则按照VHAM‑R模型重新生成新基因片段,互换两个父代个体,重复交叉过程可以生成第二个子代个体;
4.4遗传算法中的变异操作,变异操作的过程为:
4.4.1通过变异函数来确定需要变异的个体染色体基因,如下公式所示:其中Uj‑pes、Uj‑ram分别为主机的CPU、内存利用率,为设定的参数;
4.4.2选择fc(j)较小的基因进行删除,使得每次删除的都是利用率较低的较差基因,
4.4.3将该基因上的虚拟机通过4.3交叉操作的方法重新进行编码插入到其他基因中。
2.如权利要求1所述的云计算环境下基于VHAM‑R模型的虚拟机放置遗传优化方法,其特征在于,所述步骤3.3中,对主机簇群划分的过程为:
3.3.1虚拟叶子节点扇区以及虚拟分层结构深度确定,选择虚拟分层结构中每个子节点扇区的叶子数f,f为一位整数,选择合适的f和z会使得到的算法效益和负载均衡度和期望较相近;根据节点扇区的叶子数f以及主机簇个数c,可以得到虚拟分层结构的深度d:d
f≥c
其中d是最小正整数,求出d使得上述公式成立;
3.3.2各虚拟叶子节点扇区编号,采用自然编号对每个扇区分别统一编号,从0,1,
2,...,f‑1;
3.3.3对于某一虚拟机vmi,对于任意一个虚拟节点s,都有一个对应的权重wis=h(vmi,s),h(vmi,s)内包含约定的哈希函数,在虚拟分层结构的每一层叶子扇区,都可通过h(vmi,s)计算各虚拟节点权重,选择得分最高的节点继续向下分层,直到选择至最底层的真实主机节点簇Cx;
3.3.4当虚拟机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.3.5循环步骤3.3.3‑3.3.4,直至所有虚拟机vmi最终会选择使权重得分Wi(xz+j)最高的主机节点完成分配。