林伟伟,朱朝悦
(华南理工大学计算机科学与工程学院,广东 广州510640)
云计算技术[1,2]是分布式计算、并行计算、效用技术、网络存储等传统计算机网络技术发展和融合的产物,云服务模式基于互联网为客户提供动态的、易扩展的虚拟化的资源。云基础设施不断增长的需求大幅增加了云计算数据中心的能量消耗,高能耗不仅意味着高的运营成本,并且降低了云供应商的利润率,同时也导致了高碳排放量,这是很不环保的。而对于云计算资源供应商来说,成本最小化和利润最大化一直以来都是追求的目标,因此减少能源的消耗显得非常重要[3,4]。如何高效利用能源已经成为现代计算机系统(云计算中心)的一个非常重要的研究内容[5],从而实现高效节能、绿色、环保、低炭的云计算。在云计算环境中,云资源往往是异构的、动态的[6],有效地分配云计算资源是决定整个云计算系统的性能和效率的关键所在。云计算资源调度算法数学模型是整数规划问题,很多资源调度算法以最短任务完成时间为调度目标,使用了启发式算法求解次优解[7]。随着云计算的快速普及,经济效益成为资源调度的一个重要考虑因素,因此在模型中增加了经济度量参数,如能耗、机器价格、最迟完工时间等[8]。
云资源调度是云计算的重要研究内容之一[9]。Beloglazov A 等人[10]提出了一个节能的云计算框架,他们利用启发式的方法为客户端应用程序提供数据中心资源,提高了数据中心的能源效率。Garg S K 等人[11]考虑了很多影响能源效率的因素(例如,能源消耗、CPU 功耗效率、工作量等等),他们提出一种接近最优的调度策略,该策略利用横跨不同数据中心之间的数据为云提供者服务。文献[12]针对云计算的高能耗问题,从系统级节能角度,提出了一种节能的资源调度算法。作者建立云计算的两级资源调度模型,综合考虑主机的工作、空闲和休眠等多种状态建立能耗模型,根据云任务的服务质量需求产生初始种群,以系统能耗最小为调度目标设计适应度函数,并根据染色体适应度的正态分布函数和种群的进化代数设计遗传算子。然而,云数据中心的服务器往往是异构的,并且当云数据中心资源分配的问题规模比较大时,资源分配复杂度比较高,上面提到的云资源分配算法无法在可接受的时间范围内得出结果。米海波等人[13]为了提高大规模虚拟化集群环境的资源利用率,提出了一种面向数据中心的集群资源按需动态配置方法,利用了布尔二次指数平滑法预测用户请求,这个方法能够根据不断变化的需求高效实时地调整集群中节点运行的数量,实现资源快速动态配置,从而提高集群利用率和降低能耗。Addis B 等人[14]提出了一个在多个时间范畴中基于混合整数非线性优化资源管理的可伸缩分布式分层框架,目的是给出一个用于虚拟化云环境的资源分配策略,该策略能在满足性能、可用性情况下最小化规模云服务中心的能耗开销。文献[15]提出了一种基于动态重配置虚拟资源的云计算资源调度方法,该方法以云应用监视器收集的云应用信息为依据,基于运行云应用的虚拟资源的负载能力和云应用当前的负载进行动态决策,然后根据决策的结果为云应用动态重配置虚拟资源。通过云应用重配置虚拟资源的方法实现资源的动态调整,不需要动态重新分配物理机资源和停止云应用为执行。该方法能根据云应用负载变化动态重置虚拟资源,优化云计算资源分配,实现云计算资源的高效使用和满足云应用动态可伸缩性的需要。文献[16]中提出了一个在云计算环境中面向作业的资源调度模型,在这个调度模型中,资源分配任务分配到具有可用的资源和用户首选项的进程中,根据作业的排名来分配计算机资源。文献[17]为了实现云计算虚拟资源的有效调度和满足用户的QoS需求,提出了基于多维QoS满足负载平衡的云资源调度方法。该调度算法首先建立一个云资源调度的数学模型和基于蚁群算法的虚拟资源调度算法,该方法能在一定程度上解决虚拟资源调度问题,可以减少负载平衡偏差,满足云计算环境的需要。文献[18]提出了利用约束满足问题对异构云数据中心的能耗优化资源调度问题进行建模,通过求解建立的约束模型可以获得能耗最优的资源分配方式,并在此基础上提出了能耗优化的资源分配算法DYnamicpower(DY)。
然而,本质上,云数据中心异构物理服务器的能耗优化资源分配问题是NP难的组合优化问题,在问题规模较小时,可以使用分支定界法或动态规划方法等最优化方法来求解;当问题规模较大时,解的空间比较大,要在合理时间内求得最优解非常困难。为了解决当云服务器规模大而导致资源分配算法求解时间过长的问题,本文从调度模式方面提出一种可扩展分布式调度方法,并设计和实现面向异构云环境的能耗高效的资源分配算法。当云数据中心待调度的物理服务器的数量比较大时,将所有待调度的服务器自动划分为若干个服务器集群,然后在每个服务器集群中建立能耗优化的资源分配约束模型,并利用Choco求解模型获得能耗优化的资源分配方式,通过分而治之的方法大大降低资源分配的复杂度,实现了能耗优化和高能效的资源分配。
Hadoop资源调度是云计算研究的关键问题之一,调度算法的好坏决定了云计算服务的很多方面,比如计算效率、能耗等等。其中,资源调度算法在合理的时间内决定分配的云资源显得十分重要。以往的资源调度算法都是把物理机资源和虚拟机资源归并在一起进行计算分配。图1为传统云数据中心资源分配算法的示意图,所有的物理机和虚拟机都是在一次分配算法的运行中实现,这个时候的云资源分配便成了一个约束满足问题的解决,先建立一个约束满足问题模型,然后根据模型的优化目标对模型进行求解,当云数据中心云服务器规模较小时,可以使用分支定界法或动态规划方法等最优化方法来求解。然而,由于基于约束满足的资源分配模型的求解复杂度为服务器个数的指数复杂度,当云数据中心资源分配的问题规模非常大时(即当待调度的服务器数量非常大,例如数量为1 000),则不能在短时间内求得最优解。
Figure 1 Resources allocation of traditional cloud data centers图1 传统云数据中心的资源分配
当云数据中心资源分配的问题规模比较大时,资源分配复杂度比较高。为此,本文提出的基于服务器集群划分的可扩展分布式调度方法采用了分而治之的方法,将所有待调度的服务器划分为若干个服务器集群,针对每个服务器集群建立能耗优化的资源分配模型,求解模型和进行资源优化分配,如图2所示。将所有待调度的服务器划分为若干个服务器集群,然后在每个服务器集群中利用约束编程框架Choco模拟实现约束满足问题对异构云数据中心的能耗优化资源调度问题建模,通过求解建立的约束模型可以获得能耗最优的资源分配方式,从而大大降低资源分配的复杂度,实现能耗优化和高能效的资源分配。
结合数据中心的实际情况,将数量很多的一个服务器集群分割成多个服务器集群要遵循一定的规则。也就是说按照一定的规则分割服务器集群,能够最大化地利用服务器集群资源和虚拟机资源,避免不必要的资源浪费。而在每个分割好的小集群内要实现局部的资源分配的最优求解,也就是在小集群中使用最优能耗资源调度算法,以能耗最优为目标为分配的虚拟机搜索物理主机分配向量[18]。将最优能耗资源调度算法表示成CSP 问题,采用最佳优先和剪枝的策略来对其进行求解。首先需要将虚拟机分配向量重新整理,使之成为包含所有待分配虚拟机的简单向量,整个过程实际上是一个搜索过程,搜索最优的资源分配路径,该过程使用开源的Choco工具模拟实现,求解在每个集群中以最优能耗为目标的最优调度方案。
Figure 2 Server cluster partitioning图2 服务器集群划分
本文提出的可扩展分布式调度方法SDSM(Scalable Distributed Scheduling Method)具体由两个算法部分组成:集群划分算法SCA(Splitting Cluster Algorithm)和可扩展的能耗优化调度算法SOECSA(Scalable Optimal Energy Consumption Scheduling Algorithm)。在可扩展分布式调度方法SDSM 中,首先是SCA 算法将待分配的服务器总资源和虚拟机总资源使用一定的规则分割成资源合适的各个小集群;然后使用SOECSA 算法将各个小集群分配好的资源进行能耗最优的约束满足求解,实现集群资源分配。
3.1.1 算法描述
图3所示为集群划分算法流程图。
Figure 3 Process of cluster partitioning图3 集群划分流程
(1)首先输入物理机、虚拟机资源(CPU、RAM)。
(2)设定分组大小Threshold,判断物理机数是否大于Threshold,如果总的物理机数大于Threshold,则将所有的物理机分割成不同的等份或集群,每个等份最多包含个数为Threshold的物理机,最后一个集群的物理机数大于或小于Threshold,集 群 个 数groupNum=PMN/Threshold,其中PMN为总的物理机数。
(3)对每个集群上的物理机资源进行统计,将各个集群累加起来的资源进行排序,每个集群资源越多,排序越前。
(4)在上一步骤中可以得知集群的个数为groupNum,故需要把虚拟机分割成groupNum等份,可以计算出每份虚拟机的个数为:cluster-Num=VMN*Threshold/PMN,其中VMN为总的虚拟机数。
(5)同样,将每份虚拟机资源进行统计,对每份虚拟机资源进行排序。
(6)根据(3)和(5)统计得到各个物理机集群和各份虚拟机资源总和的排序,将虚拟机资源总和排序高的分配到物理机资源总和排序高的集群,也就是说将虚拟机资源多的那份分配到资源多的物理机集群上。
3.1.2 算法伪代码
算法1 集群划分算法
3.2.1 算法描述
将所有待调度的服务器按照上一节提到的集群划分算法划分为若干个服务器集群,然后在每个服务器集群中实现最优能耗资源调度算法。最优能耗资源调度算法的基本思想是以能耗最优为目标为分配的虚拟机搜索物理主机分配向量[18]。将最优能耗资源调度算法表示成CSP 问题,采用最佳优先和剪枝的策略来对其进行求解。首先需要将虚拟机分配向量重新整理,使之成为包含所有待分配虚拟机的简单向量。在搜索中,对于任一待扩展节点,如果到达该节点的路径对应的能耗大于或等于最小能耗值,则停止对该节点的扩展;否则,继续扩展该节点,若该节点是最后的叶节点,则更新最小能耗的值,最终返回使能耗最小的虚拟机放置向量。该过程使用开源的Choco工具模拟实现,求解在每个集群中后最优能耗为目标的最优调度方案。如图4所示。
Figure 4 Optimal resource scheduling algorithm of energy consumption图4 最优能耗资源调度算法
3.2.2 算法伪代码
算法2 最优能耗资源调度算法
3.2.3 算法性能分析
在最优能耗资源调度算法中,假设要被分配的虚拟机数为p,物理机数为n,因此,最多只能部署p个要被分配的虚拟机在一个物理机。根据式(1)~式(4)可知,一共有3n个约束条件,根据Rivin I等人[19]关于CSP 代数求解的研究,对于一个有n个变量、每个变量取值数为m以及M个约束条件的CSP问题,其算法复杂度为O(nm·2M-n),故在最优能耗资源调度中的算法复杂度为O(pn·4n)。
本文的实验将对SDSM 与非可扩展分布式调度方法进行对比。非可扩展分布式调度方法实际上只是实现了可扩展分布式调度方法(SDSM)中包含的两个算法中的第二个算法(SOECSA),也就是说在非可扩展分布式调度方法中并不需要实现第一个集群划分算法SCA,而只是单纯地将所有的物理机资源和虚拟机资源汇总在一起实现能耗最优的资源调度分配。
为了验证本文提出的面向能耗优化的大规模云资源可扩展分布式调度方法,我们进行了相关的模拟实验。首先是对所有待调度的服务器按照本文提到的集群划分算法划分为若干个服务器集群,然后在每个服务器集群中实现最优能耗资源调度算法。最优能耗资源调度算法可以被看作成一个约束满足问题,利用基于Java的约束编程Choco对它们进行建模和求解,步骤如下:
(1)将所有的物理机分割成不同的等份或集群,每个等份最多包含个数为Threshold的物理机,最后一个集群的物理机数大于或小于Threshold,集群个数GroupNum=PMN/Threshold。对每个集群上的物理机资源进行统计,将各个集群累加起来的资源进行排序,每个集群资源越多,排序越前。
(2)在上一步骤中可以得知集群的个数为GroupNum,故需要把虚拟机分割成GroupNum等份,可以计算出每份虚拟机的个数为:Cluster-Num=VMN*Threshold/PMN。同样,将每份虚拟机资源进行统计,对每份虚拟机资源进行排序。
(3)根据(1)和(2),统计得到各个物理机集群和各份虚拟机资源总和的排序,将虚拟机资源总和排序高的分配到物理机资源总和排序高的集群,也就是说将虚拟机资源多的那份分配到资源多的物理机集群上。
(4)在每个服务器集群中实现最优能耗资源调度算法,通过Choco工具包提供的方法和接口来定义CSP问题中的X(有限变量)、D(变量的有限域)、C(约束),具体如下:
①设定变量(列出主要变量)及其作用域:
其中,变量pos是一个横坐标为虚拟机编号、纵坐标为物理机编号的表示虚拟机在物理机上分配向量的二维数组;变量dualpos与变量pos相反,横坐标为物理机编号,纵坐标为虚拟机编号;power为本次分配所产生的总能耗;DYAPOWER是本次分配产生的动态总能耗;STAPOWER是本次分配所产生的静态总能耗;pmsum为本次分配总共开启的物理机总数。
②约束。由之前的资源约束条件可知有如下约束:
③目标函数。
s.minimize(false);
s.setObject(power);
即将power作为目标变量,以求解其最小数值(最小能耗)为最终目标来运行求解器的搜索循环。
云数据中心服务器的资源总是有限的,而虚拟机所需的资源也不可能是无限大的,因此本文对物理机和虚拟机资源测试数据进行了一定的限制,如表1所示。
Table 1 Related parameters of physical machines and virtual machines表1 物理机和虚拟机资源相关参数
在本文实验中,能耗是一种能源消耗的数据表现,是一种量的表达,实际上电脑的平均功率是大概150 W 左右,当然电脑性能的不同也导致功率的不同,因此本文采用一种比较直观的方式对能耗进行描述。所有能耗都是以整数的形式表示出来,这些能耗表示了每小时的能耗值,并且这些能耗都在一个可控制的范围之内。因此,有以下的能耗假设:每台物理机的静态能耗(Static Power)都与它的CPU 和RAM 资源大小有关,资源越大,静态能耗越大,根据上面提到的计算方法对静态能耗进行分配得到每台物理机在空闲状态时产生的静态能耗在60~640。而每台虚拟机在物理机上的动态能耗主要与虚拟机的CPU 和RAM 资源大小有关,因此根据上面提到的计算方法得到每台虚拟机所产生的动态能耗限定在20~160。同时,物理机数为10~200个和虚拟机数为20~400个。
为了验证本文提出的可扩展分布式调度方法SDSM 的可行性,本文的实验分成两个部分:实验1中将Threshold设定为50,在不同的物理机数量下,SDSM 与非可扩展分布式调度方法进行对比;实验2中将Threshold分别设置为20和50,对比可扩展分布式调度方法(SDSM)在不同Threshold的实验数据。
4.3.1 实验1
在可扩展分布式调度方法中,设置Threshold为50,与非可扩展分布式调度方法进行资源分配得到的运行时间、能耗总量、启用的物理机数量进行比较,如表2所示。
由表2可以看出,非可扩展分布式调度方法在运行时间方面远远大于可扩展分布式调度方法。原因在于当物理机数量规模较大时,基于约束满足的资源分配模型的求解复杂度为服务器个数的指数复杂度,如果一次性进行约束求解,求解的空间比较大,因此导致求解的时间会很大。然而,将较大规模的物理机集群分割成几个较小规模的集群,再对各个小集群进行约束求解,由于问题规模比较小时,约束求解的空间会很小,这样每个小集群约束求解运行时间相对来说小很多,各个小集群的求解时间汇总之后也是远远比没有分割之前的运行时间短。
Table 2 Running time comparison of the two scheduling methods(Threshold=50)表2 两种调度方法(Threshold=50)运行时间对比
由图5可以看出,非可扩展分布式调度方法在能耗优化方面稍微比可扩展分布式调度方法好一点。因为将服务器分割成了各个小集群之后,分配到每个小集群对应的虚拟机资源只能分配到对应的物理机集群中,也就是说,在Choco约束求解的过程中,如果将最少能源消耗作为目标进行约束求解,每个小集群只能求解其集群的最优解,相对所有的服务器来说,每个小集群的最优解只是局部最优解而已,无法做到全局最优。所以,汇总所有的求解结果,非可扩展分布式调度方法在能耗优化方面会比可扩展分布式调度方法好,但是随着服务器数量的大大增加,能源优化方面的差距会越来越少。
Figure 5 Energy consumption comparison图5 能耗比较
图6显示了非可扩展分布式调度方法在启用的服务器数量方面比可扩展分布式调度方法要好,原因跟能耗优化方面相类似,当服务器分割成各个小集群,只能在各自的小集群中进行约束求解,这样导致要启用的服务器总数相对增加。但是,随着服务器数量的大大增加,启用的服务器总数方面的差距也会缩小。
Figure 6 Comparison of the numbers of running physical machines图6 启用的物理机数量比较
4.3.2 实验2
在可扩展分布式调度方法实验中,将Threshold分别设置为20和50进行实验数据比较。
由图7可以看出,Threshold为20 时的运行时间比Threshold为50时的相对快很多。原因在于当Threshold越小时,服务器集群被分割得越细,因此每个集群的求解空间将会大大减少,所以求解时间相对来说很小,就算汇总所有小集群的运行时间,优势也会很明显。从图8 可以看出,Threshold越小时,各个集群总的能源消耗相对增多,因为Threshold越小,被分割的集群数越多,所有的集群只能采用各自分配好的虚拟机资源进行约束求解,因此,总的能耗会相对多一点。图9显示了不同Threshold求解之后启用的物理机总数的不同,Threshold越小,启用的物理机数量越多,原因跟Threshold影响总能耗类似。
Figure 7 Comparison of running time under different Thresholds图7 不同Threshold 下运行时间对比
Figure 8 Comparison of energy consumption under different Thresholds图8 不同Threshold 下能耗对比
Figure 9 Comparison of the numbers of running machines under different Thresholds图9 不同Threshold 下启用物理机数量对比
总的来说,当Threshold越小时,集群被分得越细,集群数越多,可以在服务器数量很庞大时明显地缩小资源分配的时间。但是,这样做也有一定的缺点,那就是会导致能耗优化和启用服务器数量方面比不上Threshold比较大的情况。虽然这种将服务器集群划分的可扩展分布式调度方法在一定程度上影响了资源分配优化的结果,然而,当待调度的服务器数量非常大时,对资源分配优化结果的影响会变得越来越小。
本文研究了在云数据服务器数量规模比较大的情况下能耗优化和资源分配效率问题。当云数据中心待调度的物理服务器的规模比较大时,资源分配算法的求解空间很大,导致很难在合理的时间内求出能耗优化的资源分配方案。针对该问题,本文从调度模式方面提出可扩展分布式调度方法SDSM,并设计和实现了面向大规模云环境的能耗高效的资源分配算法。当服务器的规模比较大时,将所有待调度的服务器划分为若干个服务器集群,然后在每个服务器集群中利用约束编程框架Choco实现约束满足问题,对云数据中心的能耗优化资源调度问题建模,通过求解建立的约束模型可以获得能耗最优的资源分配方式,从而大大降低资源分配的复杂度,实现了能耗优化和高能效的资源分配。模拟实验的结果验证了本文提出的可扩展分布式调度方法的有效性。本文提出的可扩展分布式调度方法SDSM 可以应用到云计算中心,很大程度上解决大规模云服务器分配资源效率低的问题,不仅能够降低云计算中心能耗成本,并且提高了云资源分配速度。
[1] Qusay H F.Demystifying cloud computing[J].The Journal of Defense Software Engineering(CrossTalk),2011,(Jan/Feb):16-21.
[2] Mell P,Grance T,Mell P,et al.The NIST Definition of Cloud Computing(draft).National Institute of Standards and Technology[J].Appl Opt,2011,145(16):1-7.
[3] Srikantaiah S,Kansal A,Zhao F.Energy aware consolidation for cloud computing[C]∥Proc of HotPower’08,2008:1-15.
[4] Berl A,Gelenbe E,Girolamo M,et al.Energy-efficient cloud computing[J].The Computer Journal,2010,53(7):1045-1051.
[5] Beloglazoy A,Buyya R,Lee C Y,et al.A taxonomy and survey of energy-efficient data centers and cloud computing systems[J].Advances in Computers,2011,82(2):47-111.
[6] Liu L,Wang H,Liu X,et al.Greencloud:A new architecture for green data center[C]∥Proc of ICAC-INDST’09,2009:29-38.
[7] Jinquan Z,Lina N,Changjun J.A heuristic scheduling strategy for independent tasks on grid[C]∥Proc of International Conference on High-Performance Computing in Asia-Pacific Region,2005:588-593.
[8] Shi Xue-lin,Xu Ke.Utility maximization model of virtual machine scheduling in cloud environment[J].Chinese Journal of Computers,2013,36(2):252-261.(in Chinese)
[9] Lin Wei-wei,Qi De-yu.Survey of resource scheduling in cloud computing[J].Computer Science,2012,39(10):1-6.(in Chinese)
[10] Beloglazov A,Abawajy J,Buyya R.Energy-aware resource allocation heuristics for efficient management of data centers for cloud computing[J].Future Generation Computer Systems,2012,28(5):755-768.
[11] Garg S K,Yeo C S,Anandsivam A,et al.Environment conscious scheduling of HPC applications on distributed cloudoriented data centers[J].Journal of Parallel and Distributed Computing,2011,71(6):732-749.
[12] Cheng Chun-ling,Pan Yu,Zhang Deng-yin,et al.Energy saving resource scheduling algorithm in cloud environment[J].Systems Engineering and Electronics,2013,35(11):2416-2423.
[13] Mi Hai-bo,Wang Huai-min,Yin Gang,et al.Resource ondemand reconfiguration method for virtualized data centers[J].Journal of Software,2011,22(9):2193-2205.(in Chinese)
[14] Addis B,Ardagna D,Panicucci B,et al.A hierarchical approach for the resource management of very large cloud platforms[J].IEEE Transactions on Dependable &Secure Computing,2013,10(5):253-272.
[15] Lin Wei-wei,Qi De-yu.Cloud computing resource scheduling method based on dynamic reconfiguration of virtual resources:China,patent number:ZL2010102681057[P].2011-01-05.(in Chinese)
[16] Vignesh V,Sendhil Kumar K S,Jaisankar N.Resource management and scheduling in cloud environment[J].International Journal of Scientific and Research Publications,2013,3(6):1.
[17] Zemin Z,Qing Z.Resource scheduling with load balance based on multi-dimensional QoS and cloud computing[J].Computer Measurement &Control,2013(1):087.
[18] Lin Wei-wei,Liu Bo,Zhu Liang-chang,et al.CSP-based resource allocation model and algorithms for energy-efficient cloud computing[J].Journal of Communication,2013,34(12):33-41.(in Chinese)
[19] Rivin I,Zabih R.An algebraic approach to constraint satisfaction problem[C]∥Proc of IJCAI’89,1989:284-289.
[20] Rodero I,Jaramillo J,Quiroz A.Energy-efficient application-aware online provisioning for virtualized clouds and data centers[C]∥Proc of 2010International Green Computing Conference,2010:31-45.
附中文参考文献:
[8] 师雪霖,徐恪.云虚拟机资源分配的效用最大化模型[J].计算机学报,2013,36(2):252-261.
[9] 林伟伟,齐德昱.云计算资源调度研究综述[J].计算机科学,2012,39(10):1-6.
[12] 程春玲,潘钰,张登银.云环境下一种节能的资源调度算法[J].系统工程与电子技术,2013,35(11):2416-2423.
[13] 米海波,王怀民,尹刚,等.一种面向虚拟化数字中心资源按需重配置方法[J].软件学报,2011,22(9):2193-2205.
[15] 林伟伟,齐德昱.一种基于动态重配置虚拟资源的云计算资源调度方法:中国,专利号:ZL2010102681057[P].2011-01-05.
[18] 林伟伟,刘波,朱良昌,等.基于CSP 的能耗高效云计算资源调度模型与算法[J].通信学报,2013,34(12):33-41.