技术领域
[0001] 本
发明涉及一种虚拟机动态管理方法,特别涉及一种虚拟机动态放置方法。
背景技术
[0002] 近年来,随着社交网络、
电子商务和在线视频等新一代大规模互联网应用的普及,
云计算迅猛发展。
数据中心作为云计算的核心,其性能对上层云计算服务具有重要影响。然而,目前数据中心存在着
电能消耗过高、资源使用率过低以及资源使用
不平衡等突出问题,这些问题严重制约了云计算数据中心的性能。为改善数据中心的整体性能,利用
虚拟机迁移技术对虚拟机进行动态管理,成为了数据中心管理研究领域的热点话题。
[0003] 虚拟机动态管理主要包括三个过程:(1)主机触发迁移时机的决策;(2)迁移虚拟机的选择;(3)虚拟机放置
位置的选择。其中,虚拟机放置位置的选择是虚拟机动态管理的核心,它不仅直接指导着数据中心虚拟机的动态放置,而且决定了虚拟机动态放置后整个数据中心的运营效益。为了选择合适的虚拟机放置位置,已有工作提出了许多虚拟机动态放置方法。但是,对于有n个待虚拟机和m个物理主机的虚拟机动态放置问题,已有方法时间复杂度达到O(m*n),方法时间复杂度较高,难以适应大规模的数据中心环境,因此有待改进。
发明内容
[0004] 本发明的目的在于提出一种虚拟机动态放置方法,能够动态、高效地为需要迁移的虚拟机选择放置位置,该方法的时间复杂度低,更能适应性大规模的数据中心环境。
[0005] 本发明为了实现上述目的,采用如下技术方案:
[0006] 一种虚拟机动态放置方法,包括如下步骤:
[0008] s2.初始配置时选择Top-K个物理主机建立大顶堆,并创建一个已用主机集合;
[0009] s3.判断虚拟机是否迁移完成:若否,则执行步骤s4,若是,则执行步骤s10;
[0010] s4.选择一个待迁移的虚拟机;
[0011] s5.判断已用主机集合是否为空:若否,则执行步骤s6,若是,则执行步骤s8;
[0012] s6.判断当前虚拟机运行到已用主机集合中的物理主机上是否满足SLA约束条件:若满足,则执行步骤s7,若不满足,则执行步骤s8;
[0013] s7.使用选择策略为当前虚拟机选择最佳放置主机,执行步骤s9;
[0014] s8.判断当前虚拟机运行到大顶堆的顶堆主机上是否满足SLA约束条件:
[0015] 若满足,则将堆顶主机作为当前虚拟机的最佳放置位置,并将堆顶主机加入到已用主机集合中,调整大顶堆,然后执行步骤s9;
[0016] 若不满足,则执行失败策略,唤醒一个休眠的物理主机放置当前虚拟机,执行步骤s3;
[0017] s9.将当前虚拟机和其放置位置加入到迁移计划中,执行步骤s3;
[0018] s10.结束放置位置选择,输出迁移计划。
[0019] 优选地,所述步骤s2中,选择物理主机的依据是数据中心物理主机的装载程度;
[0020] 从内存、CPU以及网络带宽资源使用率均小于过载
阈值的物理主机中选择装载程度较大的K个物理主机建立大顶堆。
[0021] 优选地,装载程度定义如下:
[0022]
[0023] 其中,Fj表示装载程度, 和 分别为内存、CPU和网络带宽资源的权重,分别表示物理主机pj内存、CPU、网络带宽的资源使用率,m为物理主机数量;
[0024] Bj表示资源平衡度,Bj的计算公式如下:
[0025]
[0026] 其中,表示平均资源使用率,的计算公式如下:
[0027] 优选地,SLA约束定义如下:
[0028]
[0029]
[0030]
[0031] 其中,需要迁移的虚拟机集合为{v1,v2,…,vn},虚拟机vi的最大资源需求表示为3维向量 虚拟机vi的资源利用率表示为3维向量
[0032] rimem,ricpu,ribw分别表示虚拟机vi的内存、CPU和网络带宽的最大需求量;分别表示虚拟机vi的内存、CPU和网络带宽的使用率。
[0033] 用于放置虚拟机的物理主机集合为{p1,p2,…,pm},物理主机pj的最大资源容量表示为3维向量 物理主机pj的资源利用率表示为3维向量
[0034] 分别表示物理主机pj的内存、CPU和网络带宽最大容量; 分别表示物理主机pj的内存、CPU和网络带宽的使用率。
[0035] 如果虚拟机vi放置到物理主机pj上,则aij=1,否则aij=0。
[0036] 和 分别为内存、CPU和网络带宽资源使用率的过载阈值。
[0037] 优选地,选择策略综合考虑了物理主机的电能消耗、平均资源使用率和资源平衡度,即:
[0038]
[0039] 其中,Pj表示电能消耗,表示平均资源使用率,Bj表示资源平衡度;
[0040] 物理主机的电能消耗Pj的计算公式如下:
[0041]
[0042] 其中, 表示物理主机pj空闲状态下的能耗, 表示物理主机pj满负载状态下的能耗, 表示物理主机pj的CPU使用率;
[0043] 在所有满足SLA约束条件的物理主机中选择Ej最小的物理主机放置虚拟机。
[0044] 本发明具有如下优点:
[0045] 本发明统筹考虑服务
质量、电能消耗、资源使用和资源平衡多个优化目标,为大规模云计算数据中心环境下虚拟机管理提供了一种虚拟机动态放置方法,可以动态、高效地为需要迁移的虚拟机选择放置位置,具有线性时间复杂度,更适用于大规模数据中心环境。
附图说明
[0046] 图1为本发明中一种虚拟机动态放置方法的流程
框图。
具体实施方式
[0047] 下面结合附图以及具体实施方式对本发明作进一步详细说明:
[0048] 设定需要迁移的虚拟机集合为{v1,v2,…,vn},虚拟机vi的最大资源需求表示为3维向量 虚拟机vi的资源利用率表示为3维向量
[0049] rimem,ricpu,ribw分别表示虚拟机vi的内存、CPU和网络带宽的最大需求量;分别表示虚拟机vi的内存、CPU和网络带宽的使用率。
[0050] 设定用于放置虚拟机的物理主机集合为{p1,p2,…,pm},物理主机pj的最大资源容量表示为3维向量 物理主机pj的资源利用率表示为3维向量
[0051] 分别表示物理主机pj的内存、CPU和网络带宽最大容量; 分别表示物理主机pj的内存、CPU和网络带宽的使用率。
[0052] 虚拟机动态放置问题要求求解合适的虚拟机和物理主机映射关系<v,p>,使得数据中心服务质量、电能消耗、资源使用率和资源平衡目标较优。
[0053] 虚拟机动态放置问题既是组合优化问题,又是多目标优化问题,因此虚拟机动态放置问题求解非常困难。本发明采用启发式策略求解该问题,首先定义了以
下管理目标的评估函数:
[0054] (1)能耗模型:
[0055] 已往研究表明,物理主机的电能消耗和主机CPU使用率呈近似线性关系。
[0056] 设物理主机pj空闲状态下的能耗为 满负载状态下的能耗为 表示物理主机pj的CPU使用率,则物理主机的能耗模型表示为:
[0057]
[0058] 由于物理主机空闲状态下的能耗约为满负载状态下能耗的70%左右,因此在主机运行过程中只要通过监控获取到其CPU利用率,就可以根据能耗模型计算主机当前的电能消耗。
[0059] (2)资源使用率:
[0060] CPU、内存、网络带宽是物理机的重要
硬件资源。本发明用 分别表示物理主机pj内存、CPU、网络带宽的资源使用率。
[0061] 用平均资源使用率评估物理主机的整体资源使用情况,平均资源使用率 定义为:
[0062]
[0063] (3)资源平衡度:
[0064] 虚拟机动态管理过程中保持数据中心物理主机内存、CPU和网络带宽使用率的相对平衡也非常重要,资源平衡能够避免主机单一资源不足成为限制虚拟机放置的
瓶颈。为衡量内存、CPU和网络带宽使用率的平衡程度,本发明定义资源平衡度Bj如下:
[0065]
[0066] 物理主机资源平衡度Bj反映了物理主机内存使用率、CPU利用率和网络带宽利用率偏离平均资源使用率的程度。Bj越大,表示内存、CPU和网络带宽使用越平衡。
[0067] 当三种资源使用率相等时,Bj达到最大值1。
[0068] 基于上述定义的数据中心物理主机电能消耗、资源使用和资源平衡等管理目标的评估函数,对本发明提出的虚拟机动态放置方法作进一步描述:
[0069] 结合图1所示,一种虚拟机动态放置方法,包括如下步骤:
[0070] s1.控制节点接收到迁移请求;
[0071] s2.初始配置时选择Top-K个物理主机建立大顶堆Heap,并创建一个已用主机集合used;
[0072] s3.判断虚拟机是否迁移完成:若否,则执行步骤s4,若是,则执行步骤s10;
[0073] s4.选择一个待迁移的虚拟机vm;
[0074] s5.判断已用主机集合used是否为空:若否,则执行步骤s6,若是,则执行步骤s8;
[0075] s6.判断当前虚拟机vm运行到已用主机集合used中的物理主机上是否满足SLA约束条件:若满足,则执行步骤s7,若不满足,则执行步骤s8;
[0076] s7.使用选择策略为当前虚拟机vm选择最佳放置主机,执行步骤s9;
[0077] s8.判断当前虚拟机vm运行到大顶堆Heap的顶堆主机上是否满足SLA约束条件:
[0078] 若满足,则将堆顶主机作为当前虚拟机vm的最佳放置位置,并将堆顶主机加入到已用主机集合中,调整大顶堆,然后执行步骤s9;
[0079] 若不满足,则执行失败策略,唤醒一个休眠的物理主机放置当前虚拟机,执行步骤s3;
[0080] s9.将当前虚拟机和其放置位置加入到迁移计划Map中,执行步骤s3;
[0081] s10.结束放置位置选择,输出迁移计划Map。
[0082] 在上述步骤s2中,本发明中的K值为2,选择的依据是物理主机的装载程度。
[0083] 装载程度定义如下:
[0084]
[0085] 其中,Fj表示装载程度, 和 分别为内存、CPU和网络带宽资源的权重,m为物理主机数量,1≤j≤m。Fj越大,代表物理主机资源使用越充分,优先选择Fj较大的物理主机来建立大顶堆。为了防止SLA违约,应保证选择的物理主机内存、CPU和网络带宽资源使用率都不超过设定的阈值。初始配置的过程是从内存、CPU以及网络带宽资源使用率都小于过载阈值的物理主机中选择Fj较大的K个主机来建立大顶堆。
[0086] 虚拟机放置到物理主机上运行需要满足一定的约束条件,判断虚拟机能不能放置到物理主机上运行要看虚拟机放置到物理主机上后是否满足SLA约束。SLA约束定义如下:
[0087]
[0088]
[0089]
[0090] 其中, 和 分别为内存、CPU和网络带宽资源使用率的过载阈值。
[0091] 如果虚拟机vi放置到物理主机pj上,则aij=1,否则aij=0。
[0092] 过载阈值的设置要考虑到尽量降低物理主机的SLA违约的可能,以保证服务质量。
[0093] 虚拟机迁移到物理主机上如果满足SLA约束,那么就能够使用该物理主机放置虚拟机。
算法维持的已用主机集合中可能有多台物理主机能够放置待迁移虚拟机,为了从所有能够放置待迁移虚拟机的物理主机中选择最佳放置位置,本发明综合考虑物理主机的电能消耗、平均资源使用率和资源平衡度设计了如下的选择策略:
[0094]
[0095] 在所有满足SLA约束条件的物理主机中选择Ej最小的主机放置虚拟机。Ej最小等价于最大,表示该物理主机单位
能量能获得最大的资源利用率和最高的资源平衡度,即能量的效率最高。从数据中心m个物理主机进行Top-K选择的时间复杂度为O(m·logK),从已用主机集合中为虚拟机选择放置位置的时间复杂度为O(n·logK)。
[0096] 由于实际情况中虚拟机数量n远远小于物理主机数量m,K为常数,因此方法的时间复杂度为O(m)。本方法具有线性时间复杂度,因而在大规模云计算数据中心环境下的虚拟机动态管理过程中,能快速决策虚拟机的放置位置,进而更能适应大规模的数据中心环境。
[0097] 当然,以上说明仅仅为本发明的较佳
实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本
说明书的教导下,所做出的所有等同替代、明显
变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。