您好, 访客   登录/注册

基于负载优化的虚拟机放置方法

来源:用户上传      作者:

  摘要:随着云计算平台运营成本增加,对物力资源的利用率要求也越来越高。虚拟机放置方法是为虚拟机选择合适的物理宿主机方法,其优劣直接影响到宿主机资源利用的高低,进而影响云计算平台的运营成本。本文提出了一个基于负载优化的虚拟机放置方法,利用CPU、MEM和硬盘的占用率作为资源负载的指标,描述系统的负载情况,采用“称重”的方式,计算宿主机的资源利用情况,从而达到资源利用的最大化。实验表明,相较于OpenStack自带的虚拟机调度方法,该方法在资源利用率方面有明显提升。
  关键词:云计算:负载优化;虚拟机放置
  0引言
  随着云计算的普及应用。虚拟化技术得到快速的发展。云计算中放弃使用价格昂贵的大型机而采用价格相对低廉的集群,使用虚拟化技术实现大型计算和提供基础设施服务成为趋势。KVM性能优异、扩展性好以及安全优势明显,是目前相关领域选用较多的虚拟化平台之一。不过由于运营成本不断提升,人们对资源利用率的要求在不断提高。如何将物理资源合理的规划使用,减少物理服务器的使用量,降低运营与维护成本,提升资源利用效率是系统优化资源配置的关键问题。
  将虚拟机分配到物理服务器中,其本质是虚拟机放置问题。在满足虚拟机资源需求的前提下,如果能够将足够多的虚拟机放置在一个物理服务器中,那么每个物理设备的资源将得到充分的利用,从而减少物理服务器的使用。物理服务器使用量的减少,也必然带来能量消耗等情况的降低,进而降低云计算平台的运营成本,保证平台的可持续性发展。
  1 相關研究工作
  不少研究者对虚拟机放置问题进行了研究。并将其建模成装箱问题或多维装箱问题:箱子即为物理服务器,装入的物品是运行应用服务的虚拟机,虚拟机所用虚拟CPU、MEM、网络带宽等资源是物品的尺寸体积,箱子容量是物理服务器资源的使用阈值。如果物理服务器的数量为M,待放置虚拟机的数量为N,那么虚拟机放置到物理服务器上的解空间为MN。这是一个NP-Hard问题。在多项式时间内无法找到最优解,所以大部分的研究工作都是通过近似算法找到一个近似最优解。
  在多维空间求解最优值的策略中,主要有启发式算法、进化算法及群体智能算法。文献[3]、文献[4]和文献[5]采用启发式算法,从降低能量消耗的目标研究了虚拟机放置的问题,减少电力资源浪费带来的成本压力;文献[6]和文献[7]利用启发式算法研究了各种资源负载均衡在虚拟机放置问题中的作用。文献[8]采用遗传算法对虚拟机放置方案的多目标优化问题进行了研究,并获得了一定的成果。文献[9]采用群体智能算法的蚁群算法,在考虑能耗和网络总流量的前提下,研究了虚拟机放置问题,也取得了良好的效果。
  2 负载优化的虚拟机放置算法
  在进行虚拟机放置时。仅仅考虑将虚拟机放置到哪个物理服务器中是不够的,若处理方法过于简单,如随机或顺序等方法,只能完成基本的资源使用需求:如果方法过于复杂,属性参数在实际应用环境中又存在获取困难的情况。因此,需要在有限的资源下,寻找合理可行的分配调度方案,实现资源使用效率和方法实用性的平衡。只有充分将已有资源有效利用,才可以减少基础物理设备的消耗,降低运营成本,将服务能力最大化。
  2.1 负载计算
  基于KVM的虚拟化技术中,每个KVM虚拟机就是运行在物理宿主机上的一个进程,可以通过进程使用的物理资源情况,衡量虚拟机对宿主机的负载影响。在本文的方法中,考虑实际情况的可操作性,选择进程的内存占用率、CPU占用率和硬盘占用率作为主要的系统负载参考指标,这些数据可以随时进行采集,具备可操作性,当为虚拟机分配物理资源时,这三项指标是重要配置参数,直接影响到虚拟机的系统性能。
  算法采用的负载计算定义为:
  其中,μA、μB、μC分别为内存、CPU和硬盘在定量计算时的占比;Rused、Rtotal分别为已用内存总量、内存总量;Cused、Ctotal分别为已用CPU总量、CPU总量;Dused、Dtotal为已用硬盘总量、硬盘总量;Li为物理宿主机i的负载。
  利用上述负载计算方法,本文提出一种简便易行的基于资源优化的虚拟机放置方法,每当有虚拟机请求放置到物理宿主机上时,便对每台物理宿主机进行“称重”(weight calculating algorithm),即计算物理主机剩余资源总量与请求资源的差额,剩余资源与请求资源越接近,则被选择的可能性越高。此处需解决资源的定量计算问题。当资源种类涉及内存、CPU和硬盘等多种资源时定义,物理服务器的负载为:
  其中,Rfree、Rreq、Rtotal分别为可用内存总量、请求内存大小、内存总量;Cfree、Creq、Ctotal分别为可用CPU总量、请求CPU数、CPU总量;Dfree、Dreq、Dtotal分别为可用硬盘总量、请求硬盘大小、硬盘总量;μA、μB、μC分别为内存、CPU和硬盘在定量计算时的比例系数;wi为物理宿主机i称重之后的计算结果。
  2.2 虚拟机放置方法
  进行虚拟机调度时,首先获取虚拟机规格等信息。同时,获取各个物理主机的状态,主要包括物理主机的资源总量和剩余资源。
  其次,使用过滤方法过滤配额不足的物理主机,如果过滤后结果为空,说明没有适合放置的物理主机,至此放置失败,反之则对每个通过过滤的物理主机进行称重。称重时,分别对内存、CPU以及硬盘计算资源差百分比,即物理主机剩余资源与请求资源的差值占总资源的百分比,再把上述计算结果分别乘以相应的系数并相加得到称重结果。本文中,内存、CPU以及硬盘三者的系数分别为0.6、0.3和0.1,系数的取值主要考虑了以下因素:   (1)资源丰富程度。在实际情况,硬盘相较前两者资源最为丰富,不易成为瓶颈,CPU的虚拟化程度较内存更高,同时CPU切换的灵活性要高于内存页面的置换。因此从虚拟化的角度来看,相同情况下,CPU资源要富于内存资源:
  (2)实验结果。在多次实验测试中,观察到该系数配比下,资源利用率达到了一个较高的水平,满足实际需要。
  最后。对称重之后的物理主机列表进行升序排序,选择称重结果最小的物理主机放置虚拟机。
  3 实验分析
  下面对上述方法进行实验,以测试该方法的可行性。测试中将本方法与OpenStack自带的filter虚拟机调度算法进行对比测试。
  首先,使用5台计算节点作为初始计算资源节点,分别在5台服务器中运行一定的负载,模拟生产环境。初始服务的资源占用情况见表1.每台物理主机节点配置为AMD 4core CPU、8GB RAM、1T GB硬盘,操作系统为Ubuntu Server 14.04,OpenStack的版本為Kilo。申请资源的虚拟机规格相同,都为1核CPU、1G内存、10G硬盘。
  分别对10个、20个虚拟机放置的情况,以及1-10个虚拟机进行放置后的物理服务器负载情况进行测试。虚拟机放置情况如图1和图2所示,虚拟机放置后物理服务器的负载按2.1节所给负载计算公式分别计算负载变化情况。两种算法负载变化情况如图3、图4所示。
  由图1和图2中可以看到。WCA方法在宿主机的资源利用上更好,使用的物理服务器数量少,而OpenStack自带的filter调度方法更趋向于各个宿主物理服务器的负载相对均衡,这样的结果虽然增加了物理资源的使用量,从而也导致资源利用率的降低。
  由图3和图4的负载变化情况可知。优化后的算法较原虚拟机调度算法负载变化情况更为稳定,且资源利用更加集中。优化算法中,物理主机负载平稳提高,而原算法始终存在2台主机负载并未发生变化。综上所述,优化算法基本达到预期要求。
  4 结束语
  虚拟机放置方法的优劣直接影响到云计算平台的资源利用率高低,高效的资源利用率会减少资源消耗,明显降低平台的运行成本压力,有利于平台提供更好的服务能力。本文的方法虽然在提升宿主物理服务器资源利用上取得了一定的效果,但后续还要继续研究其它因素对平台资源负载的影响情况,例如网络带宽,网络流量等。
转载注明来源:https://www.xzbu.com/8/view-15125569.htm