SABA-S:数据中心应对突发负载的节能策略
作者: 王瑞
关键词:服务质量;虚拟机放置;能耗优化;突发负载
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2024)26-0057-07 开放科学(资源服务)标识码(OSID) :
0 引言
随着云计算不断普及,数据中心的体量和业务量也逐渐增加。服务提供商与用户之间的服务水平协议(SLA) 规定了对任务延迟的保证。服务提供商必须根据用户需求来提供资源,在保障任务完成的同时满足用户的SLA。这带来以下几方面的挑战。
首先,数据中心运营过程出现的大量突发性工作负载如何进行有效处理已成为一个难题[1]。面临突发负载时,服务供应商通常采用增加服务器的数量或将超过处理阈值的任务进行等待直到有空闲资源再进行处理等方法应对。但增加服务器需要一定的时间,在这段时间内,数据中心一直处在过载的状态下运行,这将导致数据中心的响应延迟提高,进而影响对用户的服务质量。在延缓任务执行方法上,目前有研究提出利用速率限制[2-3]来应对突发负载,但这往往会带来较大的能源消耗。同时,由于突发负载的到来难以预测,因此需要寻找更好的解决方法。
其次,在云数据中心中,用户和服务提供商签署服务级别协议(Service-Level Agreement, SLA)后,用户有权获得满足其指定服务级别的高质量服务,如何保证用户的服务质量亦是一个颇具挑战性的问题。在突发负载的情况下,服务提供商通常优先执行优先级别较高的任务,但这容易导致一部分优先级较低的任务长时间无法得到执行,陷入“长尾效应”。因此,如何在保障大部分任务的服务质量的情况下消除“长尾效应”,已成为关键问题。
并且,数据中心业务量的增加导致能源消耗增加以及更多的碳排放量[4-6]。为了减少数据中心的能耗,一种常见的方法是利用虚拟机放置策略来减少物理资源的使用以降低能耗。目前已有许多研究者[7-9]对虚拟机(Virtual Machine, VM)放置算法进行研究。但是,大多数放置算法致力于优化物理资源的利用率(例如带宽资源、CPU使用率、网络资源、内存使用率等)来减少服务器能耗,忽略了数据中心日常使用的制冷能耗。然而数据中心的制冷能耗已占到了数据中心总能耗的较大部分,有实验表明[10],在对44个数据中心进行统计研究后,指出制冷系统(ComputerRoom Air Conditioner, CRAC)消耗了数据中心总能耗的40%,甚至在某些制冷效率低的数据中心中,这一统计值高达60%。为了解决上述问题,在这项研究中,本文提出了一种有效的虚拟机节能放置策略SABA-S,该策略能在突发负载时保证用户的服务质量,并综合考虑了制冷系统的热循环模型和服务器能耗模型来减少数据中心日常使用能耗。
本文的主要贡献有以下三点:
1) 针对数据中心的突发负载,本文采用了任务队列拆分重组的方法,对原始任务队列进行拆分,按优先级高低和耗时长短进行重组,并对超出数据中心负载上限的部分做延后处理。实验表明,任务队列拆分重组方法在处理突发负载时,相比传统的FCFS(First Come First Service, 先来先服务)算法能降低平均81% 的等待延时。
2) 将任务按照优先级和耗时重组后,算法将优先执行关键任务,同时为了保障普通任务的服务质量,算法将分配一定比例的资源给普通任务,并且,为了防止一部分任务陷入“长尾效应”,长时间无法得到执行,算法将监听任务的响应比,对响应比较高的任务提高其优先级。实验表明,本文算法在短时普通任务的耗时相比同样具有优先级策略的PLSC(峰值负载处理)算法能降低82%的等待延时。
3) 针对数据中心的能耗过高问题,本文所提策略对服务器能耗模型和制冷系统能耗模型进行综合考虑,并基于模拟退火算法进行改进,优化了初始解的产生方式、迭代过程并加入了服务器启动数量控制模块。实验表明,本文策略相对其他算法能明显降低数据中心日常运行的能耗。
1 相关工作
随着数据中心相关技术的成熟,近些年已有许多工作在处理突发负载,保障对用户服务质量以及降低数据中心能源消耗方面进行了研究。
1.1 突发负载应对策略
在数据中心出现突发负载时,有研究[11]通过计算服务器的平均负载,利用平均负载代替当前负载作为虚拟机迁移的依据,降低突发负载对实时虚拟机迁移造成的恶性影响。在能源消耗部分,他们将虚拟机进行迁移整合,关闭空载的服务器,以此实现能耗的优化,但他们并没有采取措施保障对用户的服务质量。也有研究[12]通过计算不同服务器的过载概率,优先将虚拟机放置到过载概率低的服务器上来应对突发负载,但这可能导致较多的服务器处于低负载状态,造成资源浪费。亦有研究[1]通过对任务队列进行拆分重组,将超出数据中心处理阈值的部分延后处理,保证数据中心能够在突发负载的情况下正常运转,但是该研究并没有考虑数据中心的能耗问题。HU C等人[13]提出的PLSC算法在对到来的任务进行拆分重组基础上,利用任务的关键程度形成新的任务队列,并保障了关键任务的服务质量。但是对于普通任务来说,他们没有采取额外的措施来保证普通任务的服务质量,并且在一些情况下将会导致长尾效应,即一部分普通任务长时间无法获得执行。同时,该算法没有考虑虚拟机放置时的能源消耗。
1.2 服务质量保障策略
在保障服务质量的方法中,有研究[14]提出通过博弈论中的战略博弈想法来构建虚拟机放置模型,以此寻找降低服务器能耗和保障服务质量之间的平衡,但该研究未考虑突发负载带来的负面影响。也有研究[15]根据不同类型的任务对延时敏感度不同,将任务按类型拆分,优先处理延时敏感的任务,同时设立延时容忍机制,为低延时敏感度的任务设立延时容忍,延时超过一定时间后,增加该任务处理的优先级,避免了长尾效应,但该研究并没有涉及降低能耗方面的内容。另有研究[16]通过引入令牌桶的概念,为每个工作负载设置速率限制,保障了工作负载的尾部延迟服务水平,并减少了服务器的使用数量,但该研究需要相应的硬件配合,成本较高。
1.3 能源消耗降低策略
先前对于VM放置算法的研究,大部分精力都集中在平衡VM的需求和物理服务器的计算资源上[17-19]。这些研究通过优化数据中心中的VM放置来降低服务器资源的使用率。但这些节能解决方案不足以明显提高数据中心的能源效率。本文提出了一种VM放置算法,该算法在考虑了数据中心制冷能耗的基础上进一步降低了服务器能耗。最近,许多研究表明,根据服务器节点间的热循环效应来放置任务,可以节省数据中心的能耗[7-9]。这些研究利用热循环模型来优化资源分配,以减少数据中心的制冷能耗。但是,这些放置策略主要集中在任务上,而忽略了VM对数据中心能源效率的影响,同时这些策略在放置任务时没有综合考虑服务器能耗的影响,可能会造成服务器能耗的增加。与已有工作不同,本文利用热循环模型来考虑节能的虚拟机放置,在减少制冷能耗的同时进一步降低服务器能耗。
由于先前关于数据中心虚拟机放置的研究没有深入研究如何以一个较低的能源消耗处理突发负载,同时在此基础上保证用户的服务质量,因此,本文提出了一种新的虚拟机放置策略SABA-S,可以应对以下场景:
1) 突发负载:SABA-S利用拆分重组任务队列来缓解突发负载对数据中心的负面影响。
2) 长尾效应:SABA-S通过任务的响应比来为任务增加执行优先权,消除长尾。
3) 能源消耗:SABA-S提出一种启发式虚拟机放置算法,利用该算法能综合考虑服务器能耗和制冷系统能耗,有效降低虚拟机放置过程的能源消耗。
2 SABA-S策略
SABA-S策略包含两部分:第一部分用于处理数据中心的突发负载。此部分首先判断到来的负载是否为突发负载,若是突发负载,则对任务队列按优先级高低和耗时长短进行拆分重组,延缓超过处理阈值的低优先级队列,降低突发负载对数据中心性能的影响,同时监听任务响应比,提高响应比过大的任务的优先级,防止其陷入“长尾效应”,保障对用户的服务质量;第二部分则基于模拟退火算法进行改进,将虚拟机放置于合适的服务器上,以降低数据中心日常运行时的制冷及服务器能耗。 SABA-S策略架构如图1 所示。
2.1 SABA-S策略架构
SABA-S策略架构模型如图1所示,数据中心接受任务请求,若到来的任务量超过数据中心的当前处理阈值,则判定为突发负载,由SABA-S策略对其进行处理。该策略分为两步,首先将到来的任务拆分分类,按照标签分为普通任务和关键任务,再将任务拆分细化到按耗时分级,分为长时任务、中时任务和短时任务(3、2、1个单位时间任务)。将任务分类之后,按照算法的规则,优先执行关键任务,但为了防止普通任务累积过多,导致长尾效应,本文采用了监听任务响应比来提高长时间未执行任务的优先级和分配固定比例的资源去执行普通任务两个方法解决这个问题。由于短时任务的用户往往对延迟敏感度较高,因此对于普通任务,策略将优先分配资源给短时任务。将到来的任务拆分重组成新的队列后,将执行SABA-S策略的第二部分,该部分的算法将综合考虑制冷系统能耗和服务器能耗来对虚拟机放置时的能源消耗进行优化。模拟退火算法(SA) 在数据中心虚拟机放置的问题上有着良好的表现,SABA-S策略针对SA的缺点进行了改进,使其能在较短的时间内获得最优解。
当出现突发负载时,数据中心无法保障所有任务的服务质量,不及时进行处理甚至将影响整个数据中心的性能。SABA-S策略的任务队列拆分重组模块在对任务的关键程度进行划分后,还考虑了任务的运行时长,运行时长较短的任务往往用户对延迟的敏感度较高。所以,在保障关键任务的服务质量的基础上,尽可能地去保障普通任务中运行时长较短的服务质量。表1列出了本文的常用符号。
2.2 SABA-S 拆分重组算法
当前数据中心大多使用先到先执行的策略。在面对突发负载时,并非所有任务都能在规定时间内执行完成,此时首先需要保证关键任务的服务质量。而先到先执行策略无法在突发负载的情况下保障指定类型任务的服务质量,因此,本文提出一种拆分重组算法来优先保障关键任务的服务质量。
本文提出了一种新颖的拆分重组算法(SABA-S 策略第一部分),该算法首先将到来的任务进行分类,按是否为关键任务分为两类,再按任务耗费时间分为三类,形成六类任务,如图2所示。在面临突发负载时,算法优先保障关键任务的服务质量,同时分出一定量的服务器资源来运行普通任务,防止普通任务的延时过高。在关键任务执行之后,将对普通任务中占比较大的部分优先执行,以满足大部分用户的需求。同时,算法还会监测任务的响应比,通过以下公式来确定任务的运行顺序。
其中:Z代表任务的优先权,Z值越大,表示该任务优先级越高。w表示用户递交任务时的期望完成时间。ΣT表示该任务已等待时间的总和。
算法如下所示。该算法对到达数据中心的任务队列读取一次,按任务关键与否进行拆分,然后再次读取拆分后的队列,根据数据中心的处理阈值进行重组,时间复杂度为O(n)。
算法1 SABA-S 任务队列重组算法
输入:到来的任务队列M
输出:重组后的任务队列N,未处理任务队列K
1 if( len(M) > DCvalve) //判断是否为突发负载
在生成初始解时,为机架顶部附近的位置分配了一个相对较大的值。与SA相比,SABA-S策略生成了初始值,该初始值将加速获得最终的最优解。在生成新解决方案的步骤中,如果在转换策略之后新解决方案将较少的值分配给顶部机架附近的位置,则将不会执行转换。也就是说,SABA-S策略可防止当前解的方向发生变化,不会向不利于SABA-S获得全局最优解的方向变化。与SA算法相比,如果CPU利用率不高,则SABA-S将启动较少的节点来调度虚拟机。因此,SABA-S在确保任务完成的同时提高了节点的利用率。