一种面向云平台的虚拟机资源动态调度系统及方法与流程

文档序号:11690960阅读:624来源:国知局
一种面向云平台的虚拟机资源动态调度系统及方法与流程

本发明基于虚拟机动态迁移机制,涉及一种面向云平台的虚拟机资源动态调度系统及方法,属于云计算资源调度技术领域。



背景技术:

随着经济的发展,服务化成为了产业发展的必然趋势,各种生产活动的成果逐渐开始以服务的方式提供给用户使用。云计算是服务化趋势的重要体现,并以其便利、经济、易监控等特点在全球获得了飞速的发展。目前越来越多的应用服务提供商和中小型企业选择把应用部署到云平台上,这也使得近年来涌现出了一批优秀的开源云平台,比如openstack、cloudstack、eucalyptus、opennebula等。

然而这些开源云平台在资源调度方面均相对薄弱,无法适应实际生产的需要。目前云平台下的资源调度领域普遍存在着以下问题:

⑴云平台对物理主机和虚拟机的监控一般通过虚拟机监控器vmm获得,这种外部监控的方式获得的监控数据粒度较粗,且误差较大;

⑵无法实时的根据物理主机的负载状况进行资源的动态调整,通常需要人工干预,缺乏自调度的机制;

⑶随着云平台的数据逐渐增多,需要的物理主机逐渐增多,数据中心的物理主机普遍面临着负载不均衡的状况,降低了整个云平台的资源利用率,导致云平台总能耗的增加;

⑷目前针对云平台资源动态调度方法的研究中,缺乏高效、稳定的算法,很容易发生链式迁移和无效迁移。

因此,云平台下资源的合理调度是目前云计算领域面临的主要难题之一。



技术实现要素:

本发明解决的问题主要集中在以下方面:克服现有技术的不足,采用c/s架构从虚拟机和物理主机内部获取监控数据,改善通过虚拟机监控器vmm获取数据不准确的问题;在云平台增加资源动态调度的机制,无需人工干预,可以根据物理主机的负载状态实时进行内部资源的调整;改善云平台的负载均衡度,使资源在各物理主机分布均匀,避免因资源过度集中而对节点的性能造成影响,同时关闭空闲节点,节约电能消耗;提出一套高效、稳定的资源动态调度算法,避免过度迁移和无效迁移,提升云平台运行的稳定性。

本发明的技术解决方案:面向云平台的一种虚拟机资源动态调度系统,如图1所示包括:

资源监控模块:负责物理主机和虚拟机资源使用情况的实时监控;对云平台中所有物理主机和其上虚拟机的cpu、内存、网络带宽三类资源的资源总量和使用率进行监控,并将获取的物理主机和虚拟机资源的cpu、内存、网络带宽的监控数据与当前时间t传递给实时数据分析模块,并存入到云平台作为控制节点的物理主机的mongodb数据库中;

实时数据分析模块:负责数据分析统计工作,包括物理主机负载分析和云平台的数据分析;物理主机负载分析通过从资源监控模块获取到的当前物理主机的cpu、内存和网络带宽的资源总量和使用率,计算各物理主机的实时负载值,将物理主机的负载值传递给迁移判定模块;云平台的数据分析是对云平台的负载均衡度和总能耗进行统计,注:云平台的负载均衡度为云平台中所有物理主机负载值的标准差,总能耗为云平台中所有物理主机的能耗总和。物理主机的负载、能耗指标与cpu、内存、网络带宽的关系见后文具体实施方式中的关键概念说明。定期生成负载均衡度和能耗报告是便于对本发明中动态调度方法的效果进行观察和统计,是否随着本动态调度方法的运行,改善了云平台的负载均衡度和总能耗。

迁移判定模块:接收实时数据分析模块传递过来的各物理主机的负载值,结合负载值历史数据和预测数据判定物理主机是处于高负载、低负载及正常三个负载状态中的哪一种,并对物理主机是否需要在此刻迁移进行精准的判定,并将判定结果反馈给云平台控制节点,得到上限迁移集合smax和下限迁移集合smin作为判定结果,为后续资源调度过程提供依据;若迁移判定模块判定某物理主机无需迁移操作,则将结果反馈给资源监控模块,由资源监控模块继续对该物理主机进行资源监控的行为。

待迁移虚拟机选择模块:对迁移判定模块中负载状态为高负载或低负载的物理主机进行迁移虚拟机的选择。对于集合smax,选择出最适合的虚拟机组合进行迁移,对物理主机cpu、内存及带宽使用率的值进行分析,根据当前物理主机资源超载的情形进行匹配,智能的采用多样化的虚拟机选择方案,实现细粒度的选择,得到上限虚拟机迁移列表vm_migrate_max;对于集合smin,将集合内每个物理主机的所有虚拟机加入到下限虚拟机迁移列表vm_migrate_min,最终得到下限虚拟机迁移列表vm_migrate_min。

目标主机定位模块:为待迁移虚拟机选择模块得到的虚拟机迁移列表vm_migrate_max和vm_migrate_min中的每个虚拟机选择适应度最高的物理主机作为迁移的目的主机,并通过云平台控制节点发送迁移指令进行虚拟机动态迁移操作,迁移工作完成后,将云数据中心中空闲物理主机关闭。在满足迁移要求的同时,要防止迁移后发生无效迁移和链式迁移,满足迁移后提升云平台负载均衡度和降低总能耗的要求。若当前没有适合的物理主机作为某迁移虚拟机的目的主机,则不对该虚拟机进行迁移迁移操作,并将结果反馈给资源监控模块,由资源监控模块继续对该虚拟机的宿主机进行资源监控的行为。

所述的资源监控模块系统架构图如图2所示,在云平台中均有一台性能较好的物理主机作为云平台的控制节点,云平台中除控制节点外的其他物理主机作为计算节点。云平台的计算节点由控制节点负责调度,且控制节点和计算节点是互相连通的。由图2可知,所有的物理主机底层都依赖于计算机硬件和kvm虚拟化模块,物理主机中的qemu软件负责对底层kvm模块进行管理,从而使物理主机完成正常的虚拟机化功能。在本发明中,在控制节点安装监测server服务脚本和mongodb数据库,在所有的计算节点和虚拟机内部安装监测agent服务脚本。资源监控模块具体的实现过程如下:

⑴初始化云平台下的所有物理主机资源和虚拟机资源;

⑵在控制节点上部署并开启自行编写的监控server服务脚本,绑定该控制节点的固定端口3344,实时与云平台上其他物理主机进行通信;

⑶在所有的计算节点和虚拟机内部部署并开启自行编写的监控agent服务脚本,该agent服务脚本是通过psutil工具获取所在计算节点或者虚拟机的cpu、内存以及网络带宽使用情况,并与server端通信,将获取到的监控数据和相应的时间t发送给云平台的控制节点;

⑷控制节点利用当前时间t物理主机的监控数据计算物理主机负载值,并和传递过来的虚拟机cpu、内存、网络带宽使用率数据一起存入存入控制节点上的mongodb数据库进行保存;

⑸返回步骤⑷继续监控行为。

所述的迁移判定模块的判定流程如图3所示,其具体实现过程如下:

⑴初始化物理主机集合h={host1,host2,…,hostn}为云平台所有可用物理主机,上限迁移集合smax、下限迁移集合smin均为空,取出h中第一个物理主机,进入步骤⑵;

⑵初步判定物理主机的负载状态,即该物理主机是高负载、低负载还是正常。具体做法如下:接收实时数据分析模块传递过来的各物理主机当前时刻t的负载值workload,若workload>0.8,则判定为负载值过高;若workload<0.3,则判定为负载值过低;否则,物理主机负载正常;

⑶物理主机历史负载值检测,若初步判定为高负载状态,则取出该主机前n个历史负载值,若该n个值均高于上限阈值0.8,则进入步骤3负载预测阶段;低负载状态的处理情况类似,若前n个历史负载值均低于0.3,则进入步骤⑷负载预测阶段,其它情形则转到步骤⑸;

⑷负载值预测阶段,对经过历史负载值检测的物理主机进行负载的预测,基于ar时间序列预测算法,对物理主机未来m个负载值进行预测,并计算预测的负载值均值,若仍然高于上限阈值或低于下限阈值,则将该节点加入smax或smin,转到步骤⑸。ar时序模型表述如下:

yt=θ1yt-1+θ2yt-2+…+θpyt-p+εt

在该模型中,{yt-p,yt-p+1,…,yt-1}为历史数据集合,θ1,θ2,…,θp为确定的模型参数,εt为噪声序列。

在本发明中,采用ar自回归时序预测模型对物理主机负载进行预测,能够有效刻画物理主机负载的变化趋势和走向,避免由瞬时峰值和瞬时低谷引起的无效迁移和频繁迁移。

⑸判断所有物理主机是否遍历完毕,若全部物理主机遍历完毕,则此阶段算法结束,并将结果反馈给云平台控制节点,得到的上限迁移集合smax和下限迁移集合smin,为后续资源调度过程提供依据。若迁移判定模块判定某物理主机无需迁移操作,则将结果反馈给资源监控模块,由资源监控模块继续对该物理主机进行资源监控的行为;否则遍历下一个物理主机,返回步骤⑵;

上述过程中n和m的值可根据实际应用场景自行设定。

所述待迁移虚拟机选择模块如图4所示,其具体实现过程如下:

⑴获取迁移判定模块得到的上限迁移集合smax和下限迁移集合smin,在云平台控制节点上初始化上限虚拟机迁移列表vm_migrate_max和下限虚拟机迁移列表vm_migrate_min为空;

⑵首先对集合smax进行处理,判断smax中是否为空,若集合不为空,则取出剩余节点的第一个,进入步骤⑶,否则进入步骤⑸;

⑶分析该物理主机资源超载属于哪一种情形,比如若物理主机cpu使用率高于上限阈值0.8,则该物理主机属于cpu超载型,内存和网络带宽类似。这样对于三类资源分别是否超载共有7种组合,本发明针对这7种组合采用多样化的虚拟机选择策略选择最适合的虚拟机,并将待迁移虚拟机加入到vm_migrate_max列表中;

针对物理主机的cpu使用率、内存使用率和网络带宽使用率三类资源分别是否过高进行划分,这里用cpuusage(t)代表物理主机当前时刻t的cpu使用率,memusage(t)代表物理主机当前时刻t的内存使用率,bwusage(t)代表物理主机当前时刻t的网络带宽使用率,具体定义如下7种组合:

①若物理主机cpuusage(t)>0.8,memusage(t)<0.8,bwusage(t)<0.8,则物理主机属于cpu超载型;

②若物理主机cpuusage(t)<0.8,memusage(t)>0.8,bwusage(t)<0.8,则物理主机属于内存超载型;

③若物理主机cpuusage(t)<0.8,memusage(t)<0.8,bwusage(t)>0.8,则物理主机属于网络带宽超载型;

④若物理主机cpuusage(t)>0.8,memusage(t)>0.8,bwusage(t)<0.8,则物理主机属于cpu和内存超载型;

⑤若物理主机cpuusage(t)>0.8,memusage(t)<0.8,bwusage(t)>0.8,则物理主机属于cpu和网络带宽超载型;

⑥若物理主机cpuusage(t)<0.8,memusage(t)>0.8,bwusage(t)>0.8,则物理主机属于内存和网络带宽超载型;

⑦若物理主机cpuusage(t)>0.8,memusage(t)>0.8,bwusage(t)>0.8,则物理主机属于cpu、内存和网络带宽超载型;

表1为以上7种物理主机资源使用情况组合所对应的的虚拟机选择方案。其中vcpuusage、vbwusage表示虚拟机使用资源占相应物理节点资源总量的比例;w1,w3为物理主机cpu和网络带宽的负载权值。表1中ramfit计算方法如下:

其中,memusage为物理主机内存的使用率;vmemusage为虚拟机内存使量占物理主机内存资源总量的比例,upthreshold为物理主机负载上限阈值,在本发明中统一取值为0.8。表1为本发明系统中待迁移虚拟机选择模块—多样化的虚拟机选择方案。

表1多样化虚拟机选择方案

⑷检测当前物理主机负载值,若该物理主机负载值恢复到正常水平,将该物理主机从smax删除,返回步骤⑵,否则返回步骤⑶;

⑸对集合smin进行处理,判断smin中是否为空,若集合不为空,则取出剩余物理主机的第一个,进入步骤⑹,否则结束;

⑹若当前物理主机满足基本迁移要求,将当前物理主机上的所有虚拟机加入到下限虚拟机迁移列表vm_migrate_min,返回步骤⑸。

在本发明中,提出一种多样化的虚拟机选择方案去匹配物理节点资源超载的不同类型,保证最大化释放宿主机资源,同时考虑了迁移成本和迁移次数,减少虚拟机迁移带来的性能下降和带宽消耗过多的影响。

所述目标主机定位模块如图5所示,其具体实现过程如下:

⑴获取上限虚拟机迁移列表vm_migrate_max和下限虚拟机迁移列表vm_migrate_min,将其结合成总迁移列表vm_migrate,优先处理上限虚拟机迁移列表,并初始化迁移映射表migrationmap(vm,host为空;

⑵若总迁移列表vm_migrate仍有剩余待迁移虚拟机,则取出vm_migrate中第一个,进入步骤⑶,否则进入步骤⑹;

⑶根据待迁移的虚拟机的需求和可用物理主机集合进行物理主机过滤hostfilter,将剩余资源不满足虚拟机要求的物理主机剔除,得到过滤后的物理主机集合host_avaliable;

⑷根据虚拟机对cpu、内存和网络带宽的需求情况计算虚拟机对每个host_avaliable中物理主机的cpu、内存和网络带宽需求量和对物理主机的匹配度;其中,资源需求计算方法如下:

sij=reqij*wt

三个分量分别代表虚拟机i对物理主机j剩余cpu、内存和带宽的资源请求的占比;wt=(w1,w2,w3)为物理主机负载值的权值比例。匹配度计算方法如下:

matchij=1-sij

⑸对步骤⑷中的各物理主机的匹配度,计算该虚拟机迁移到各节点的迁移概率,迁移概率pij计算方法如下:

其中,matchij为虚拟机i对物理主机j的匹配度,假设经过物理主机过滤后,共有k个节点可以选取,且有

将迁移概率从大到小排序,最终选择迁移概率最大的物理主机作为虚拟机的迁移目标物理主机,并加入到迁移映射表migrationmap中,并返回步骤⑵;

⑹根据migrationmap中的迁移映射关系,云平台的控制节点发送迁移指令进行虚拟机动态迁移操作,迁移工作完成后将云平台中空闲物理主机关闭。

本发明根据迁移虚拟机对物理主机匹配度大小和迁移概率选择目标物理主机,使得资源多、性能好的物理主机能匹配到较多的迁移虚拟机,更有利于提升系统的负载均衡度。

本发明与现有技术相比的优点在于:

⑴采用c/s架构从虚拟机和物理主机内部获取监控数据,实现了获取的数据更加准确和可靠,减少了外部监控的误差;

⑵在云平台增加了资源动态调度的机制,无需人工干预,可以根据物理主机的负载状态实时进行内部资源的调整;

⑶提出一套高效、稳定的资源动态调度算法和框架,有利于改善系统的负载均衡和能耗情况,同时避免无效迁移。

附图说明

图1为本发明系统的整体架构图;

图2为本发明系统中的资源监控模块架构图;

图3为本发明系统中的迁移判定模块实现过程;

图4为本发明系统中待迁移虚拟机选择模块实现过程;

图5为本发明系统中目标主机定位模块实现过程。

具体实施方式

为了更好地理解本发明,先对一些基本概念进行一下解释说明。

⑴云平台:利用openstack项目中的nova、neutron、swift等模块构建云平台,通过标准公用服务接口api为其他模块提供数据资源。其中,为资源监控模块提供cpu、内存、网络带宽三类资源;为实时数据分析模块、迁移判定模块、迁移虚拟机选择模块和目标主机定位模块提供统一的计算分析数据。

⑵物理主机负载值:本发明中将物理主机的负载值定义为该物理主机的cpu、内存、网络带宽使用率的加权和,具体计算如下:

workload=w1*cpuusage(t)+w2*memusage(t)+w3*bwusage(t)

cpuusage(t),memusage(t),bwusage(t)为当前时刻t物理主机cpu、内存、网络带宽的使用率,w=[w1,w2,w3]为权重因子,可根据实际需要自行设定。

⑶物理主机能耗:物理主机运行时消耗的电能。研究表明,物理主机的能耗绝大部分来自于cpu的使用,并与cpu近似成以下线性关系:

p(t)=kfmax+cpuusage(t)*(1-k)*fmax

其中,p(t)为物理主机t时刻的电能消耗,cpuusage为物理主机cpu的使用率,fmax为满负载情况下物理主机的电能消耗,k为空闲情况下节点电能消耗占满负载情况下电能消耗的比例,一般取k为0.7。

⑷云平台负载均衡度:workloadi表示物理主机i的负载值,lb表示云平台的负载均衡度,则lb计算公式如下:

n为云平台中所有正在运行的物理主机的数量,为云平台物理主机的负载值均值。

⑸psutil:是一个跨平台的进程管理和系统工具的python库,可以处理系统cpu,memory,disk,network等信息。主要用于系统资源的监控,分析,以及对进程进行一定的管理。

下面结合附图对本发明进行详细说明。

如图1所示,本发明面向云平台的虚拟机资源动态调度方法由资源监控、实时数据分析、迁移判定、迁移虚拟机选择和目标主机定位五个过程构成。

整个实现过程如下:

⑴资源监控。首先初始化云平台下的所有物理主机资源和虚拟机资源。云平台都有一个物理主机作为平台的控制节点。在控制节点上部署并开启自行编写的监控server服务脚本,绑定控制节点的固定端口3344,实时与云平台上其他物理主机进行通信。云平台上除控制节点外的其他物理主机都作为计算节点,由控制节点负责调度,并与控制节点互相连通。在所有的计算节点和虚拟机内部部署并开启自行编写的监控agent服务脚本,该agent服务脚本是通过psutil工具获取所在计算节点或者虚拟机的cpu、内存以及网络带宽使用情况,并与server端通信,将获取到的监控数据和相应的时间t发送给云平台的控制节点。控制节点利用当前时间t物理主机的监控数据计算物理主机负载值,并和传递过来的虚拟机cpu、内存、网络带宽使用率数据一起存入mongodb数据库存入控制节点上的mongodb数据库进行保存。以上过程为资源监控过程,不断重复进行。

⑵实时数据分析。负责数据分析统计工作,包括物理主机负载分析和云平台的数据分析;物理主机的负载分析通过从资源监控模块获取到的当前物理主机的cpu、内存和网络带宽的资源总量和使用率,计算各物理主机的实时负载值,将物理主机的负载值传递给迁移判定模块;云平台的数据分析是对云平台的负载均衡度和总能耗进行统计,注:云平台的负载均衡度为云平台中所有物理主机负载值的方差,总能耗为云平台中所有物理主机的能耗总和。物理主机的负载、能耗指标与cpu、内存、网络带宽的关系见后文具体实施方式中的关键概念说明。定期生成负载均衡度和能耗报告是便于对本发明中动态调度方法的效果进行观察和统计,是否随着本动态调度方法的运行,改善了云平台的负载均衡度和总能耗。

⑶物理主机迁移判定。①初始化物理主机集合h={host1,host2,…,hostn}为云平台所有可用物理主机,上限迁移集合smax、下限迁移集合smin均为空,取出h中第一个物理主机,②初步判定物理主机的负载状态。即该物理主机是高负载、低负载还是正常。具体做法如下:接收实时数据分析模块传递过来的各物理主机当前时刻t的负载值workload,若workload>0.8,则判定为负载值过高;若workload<0.3,则判定为负载值过低;否则物理主机负载正常;③接下来进行物理主机历史负载值检测,若物理主机初步判定为高负载状态,则取出该主机前n个历史负载值,若该n个值均高于上限阈值0.8,证明物理主机历史负载值也过高,则进入步骤④负载值预测阶段;低负载状态的处理情况类似,若前n个历史负载值均低于0.3,说明物理主机历史负载值也过低,则进入步骤④负载值预测阶段;④负载值预测阶段。对经过历史负载值检测的物理主机进行负载值的预测,基于ar时间序列预测算法,对物理主机未来m个负载值进行预测,并计算预测的负载值均值,若仍然高于上限阈值或低于下限阈值,则将该节点加入smax或smin。ar时序模型表述如下:

yt=θ1yt-1+θ2yt-2+…+θpyt-p+εt

在该模型中,{yt-p,yt-p+1,…,yt-1}为物理主机历史负载值集合,θ1,θ2,…,θp为确定的模型参数,εt为噪声序列。在本发明中,采用ar自回归时序预测模型对物理主机负载值进行预测,能够有效刻画物理主机负载的变化趋势和走向,避免由瞬时峰值和瞬时低谷引起的无效迁移和频繁迁移。⑤判断集合h中所有物理主机是否遍历完毕,若全部物理主机遍历完毕,则此阶段算法结束,并将结果反馈给云平台控制节点,得到的上限迁移集合smax和下限迁移集合smin,为后续资源调度过程提供依据。若迁移判定模块判定某物理主机无需迁移操作,则将结果反馈给资源监控模块,由资源监控模块继续对该物理主机进行资源监控的行为;否则遍历下一个主机节点,返回步骤②;

上述物理主机判定中n和m的值可根据实际应用场景自行设定。

⑷迁移虚拟机选择。获取⑶中物理主机迁移判定过程得到的上限迁移集合smax和下限迁移集合smin,在云平台控制节点上初始化上限虚拟机迁移列表vm_migrate_max和下限虚拟机迁移列表vm_migrate_min为空;首先对集合smax进行处理,判断smax中是否为空,若集合不为空,则取出剩余物理主机的第一个,分析该物理主机资源超载属于哪一种情形,比如若物理主机cpu使用率高于上限阈值0.8,则该物理主机属于cpu超载型,内存和网络带宽类似。这样对于三类资源分别是否超载共有7种组合,本发明针对这7种组合采用多样化的虚拟机选择方案选择最适合的虚拟机,并将待迁移虚拟机加入到vm_migrate_max列表中;接下来检测当前物理主机负载值,若该物理主机负载值恢复到正常水平,将该物理主机从smax删除,对smax中的其他物理主机进行同样处理操作,否则对当前物理主机继续进行迁移虚拟机的选择;对集合smax处理完毕后,再对集合smin进行处理,判断集合smin是否为空,若集合smin不为空,则取出剩余物理主机的第一个,将当前物理主机上的所有虚拟机加入到下限虚拟机迁移列表vm_migrate_min中,并继续对smin中的其他物理主机进行同样处理操作,直到集合smin为空。

⑸目标主机定位。首先获取⑷中上限虚拟机迁移列表vm_migrate_max和下限虚拟机迁移列表vm_migrate_min,将其结合成总迁移列表vm_migrate,优先处理上限虚拟机迁移列表vm_migrate_max,并初始化迁移映射表migrationmap(vm,host为空;若总迁移列表vm_migrate仍有剩余待迁移虚拟机,则取出vm_migrate中第一个;根据待迁移的虚拟机的需求和可用物理主机节点集合进行物理主机过滤,将剩余资源不满足虚拟机要求的物理主机剔除,得到过滤后的物理主机集合host_avaliable;根据虚拟机对cpu、内存和网络带宽的需求情况计算虚拟机对每个host_avaliable中物理主机的cpu、内存和网络带宽需求量和对物理主机的匹配度。其中,资源需求计算方法如下:

sij=reqij*wt

三个分量分别代表虚拟机i对物理主机j剩余cpu、内存和网络带宽的资源请求的占比;wt=(w1,w2,w3)为物理主机负载值的权值比例。匹配度计算方法如下:

matchij=1-sij

根据各物理主机的匹配度,计算该虚拟机迁移到各物理主机的迁移概率,迁移概率pij计算方法如下:

matchij为虚拟机i对物理主机j的匹配度,假设经过物理主机过滤后,共有k个节点可以选取,且有将迁移概率从大到小排序,最终选择迁移概率最大的物理主机作为迁移目标物理主机,并加入到迁移映射表migrationmap中;根据migrationmap中的映射关系,控制节点发送迁移命令进行虚拟机动态迁移操作,迁移完成后将云平台中空闲物理主机关闭。

本发明未详细描述的部分属于本领域公知技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1