基于虚拟机聚合的云平台高能效资源调度框架
2022-11-16鲁逸丁
鲁逸丁
(中国银联 上海市 201201)
1 介绍
云计算平台当前面临的主要挑战是有效管理物理资源,达到优化性能和节约能源的目标。能源消耗会影响环境,并产生大量资源费用,造成云平台中计算机集群的高运营成本。降低数据中心的能耗受到了学术界和工业界的极大关注[1]。研究表明,数据中心服务器大部分时间都以10%到50%的利用率运行。由于服务器空闲时会消耗其峰值功率的50%以上[2],处于空闲状态或利用率较低的服务器会浪费大量的能源。因此,为了最大限度地降低数据中心的能耗,需要将虚拟机迁移到尽可能少的服务器上。云服务提供商专注于设计节能、高效的云平台资源调度策略,通过将虚拟机聚合到较少的物理主机,关闭空闲的物理主机以节省能源。因此,采用适当的虚拟机放置和迁移策略,对于为客户提供期望的虚拟机处理性能,以及节约云平台能源至关重要。
当云平台收到客户端的虚拟机创建请求后,资源调度模块会创建一个虚拟机,为其分配客户端请求的CPU、内存等物理资源,并将其部署到云平台的一个物理主机。当前云计算服务提供商,如阿里云、华为云,通常采用基于隔离的虚拟机放置策略,在独立物理主机中处理用户的虚拟机请求。云平台将这些分配给虚拟机的资源保留,用于虚拟机的整个生命周期,并且仅当客户请求释放虚拟机时,才释放其所占用的资源。研究表明[3],虚拟机实际仅利用了大约虚拟机所分配CPU 资源的35%和内存资源的55%。因此,当虚拟机应用的实际资源需求较低时,资源仍然占用,会导致资源浪费。大量处于活动状态的物理主机会增加云平台提供商的能源费用,并对环境产生不良影响。同时,云资源的过度预留会导致大量CPU 和内存资源浪费。这是由于,云客户通常不知道其应用程序所需要资源的确切数量,因此他们倾向于过度预留资源以保证运行应用的性能。另外,托管在物理主机上的应用所需要的资源数量随着时间而改变,使得虚拟机难以充分使用其所请求的全部资源。
虚拟机资源超卖策略[4]能够较好解决以上资源浪费的问题,这种策略假设虚拟机占用资源不会超过物理主机的实际容量,部署超过物理主机实际能够承载容量的虚拟机。由于虚拟机通常不能完全利用其保留的资源,因而虚拟机集群可以部署在更少的物理主机上。然而,当在物理主机上部署虚拟机的资源实际需求量超过了物理主机的容量时,就会造成物理主机过载。此时,过载的物理主机上运行的虚拟机将会出现性能下降,导致违反云服务提供商和云客户之间的服务质量协议。虚拟机迁移技术[5]能力可用于解决物理主机过载问题,将过载物理主机上托管的虚拟机迁移到其他未充分利用或空闲的物理主机上,可以增强云平台可管理性、提高资源利用率、节省物理主机的能耗。然而,同时也会导致停机时间增加,从而降低对虚拟机的处理性能。同时,在动态的云计算环境中,每小时会有数千个虚拟机请求到达,虚拟机迁移成本高昂。因而,需要解决哪些虚拟机应该迁移,以及这些虚拟机应该迁移到哪些物理主机的问题。
为了解决以上问题,本文提出一种节能、高性能、低成本的高效能虚拟聚合放置策略,在相同的物理主机上处理不同用户多种类型的虚拟机请求,设计虚拟机在云平台异构物理主机的放置位置,从而在性能和用户成本约束条件下,最大限度地降低基础设施能耗。具体而言,首先根据虚拟机历史和当前的资源使用情况监测数据,预测虚拟机的未来资源利用率,并使用这些预测结果做出虚拟机迁移决策,以提高虚拟机的资源利用率;而后,预测物理主机过载的发生,并在过载之前触发虚拟机迁移操作,以避免违反服务质量协议;最后,通过确定要迁移哪些虚拟机,以及哪些物理主机需要托管迁移来的虚拟机,以执行高能效的虚拟机迁移,从而达到迁移能耗开销和活动物理主机数量最小化的目标。
1 虚拟机迁移技术
虚拟机VMware[6]和Xen 提供实时迁移机制,客户因迁移过程而经历的停机时间非常短,从几十毫秒到一秒钟不等。但当遇到物理主机过载时,采用有效的资源管理策略,决定迁移哪些虚拟机,以及哪些物理主机应该是每次迁移的目的地是具有挑战的难题。最大优先试探法[7]通过将具有最大资源需求的虚拟机移动到具有最大资源空闲的物理主机,同时尝试最小化所需迁移虚拟机的数量。文献[8]对这种启发式算法进行了改进,将经常相互通信的虚拟机放置在彼此靠近的位置。这些启发式方法的主要缺点是,它们完全忽略了与迁移相关的能耗开销。文献[9]提出了考虑迁移成本的迁移策略,但仅考虑虚拟机的CPU 单一资源。尽管迁移成本较低的虚拟机,但没有考虑活动状态的物理主机是否有足够空闲资源来托管迁移的虚拟机。使得物理主机从睡眠状态转为活动状态来托管迁移的虚拟机,增加了云平台中开启物理主机的数量,从而带来较高的能耗开销成本[10]。与以前的工作不同,本文提出的资源调度框架考虑虚拟机迁移的能耗开销,以及虚拟机从休眠到活动状态切换的能耗开销,采用面向最小化迁移能耗开销的虚拟机迁移策略。
文献[12]提出一种处理物理主机过载的方法,在检测到过载时触发虚拟机迁移,阻止了虚拟机竞争有限的物理资源,但可能会导致服务级别协议违约。为了解决该问题,文献[13]提出基于阈值的虚拟机迁移技术,当物理主机的利用率超过某个设定的阈值,在过载实际发生之前触发虚拟机迁移操作。阈值通常设置为90%的利用率,或者根据工作负载的波动程度为每个物理主机进行动态调整[14]。物理主机的利用率波动越大,设置的阈值越低,反之亦然。虽然基于阈值的技术减少了过载,由于为每个物理主机留下了一定的未利用的空闲,限制了利用率增益。此外,超过设定的阈值并不一定意味着会发生过载,会触发许多不必要的迁移。为了应对以上问题,文献[26]使用傅立叶变换和文献[27]使用SVM 预测模型从云应用的执行轨迹中提取资源的周期性模式,以预测这些应用程序今后的资源需求。文献[28]对MapReduce 作业进行了分析,预测数据处理作业新提交实例的资源需求。文献[31]提出了快升慢降的在线虚拟机资源需求预测方案,并触发迁移以避免过载。本文提出了一种基于预测的过载避免技术,该技术预测每个调度的虚拟机的未来资源需求,以便可以预见过载并可以提前触发迁移。预测有助于决定将新提交的虚拟机放在哪里,以便在尽可能避免过载的同时提高资源利用率。同时,采用自适应预测Lasso 回归模型,在线学习和预测客户端调度的虚拟机的资源需求,而不需要任何关于托管虚拟机的先验知识。
2 云平台资源调度方法
如图 1 所示,本文将云平台资源调度过程分为部署、运行和调整等三个阶段。在部署阶段,主要任务是为用户的应用分配虚拟机资源并部署在合适的物理主机。用户将应用部署在云平台,处理外部请求,提供特定应用功能,这些功能需要特定的硬件资源来满足处理并发请求。这些云应用部署在虚拟机中,通过虚拟机物理资源的分配,按需获取硬件资源。客户可以选择合适物理资源的虚拟机来执行应用程序,并支付与物理资源相应的费用。
图1:云平台资源调度方法
在运行阶段,虚拟机的物理资源需求会随着时间的推移而变化,会造成物理主机资源过载,不能满足所部署虚拟机的资源需求。每台物理主机上部署虚拟机资源预测模块和物理主机过载预测模块。首先,虚拟机资源预测模块根据搜集的每台虚拟机资源使用历史数据,预测今后的资源使用状况,利用预测信息来保障云平台部署应用的服务质量。而后,物理主机过载预测模块汇总物理主机上各个虚拟机的资源预测结果,推断预测每台物理主机是否会出现过载现象。
在调整阶段,云平台部署有中央式的云平台资源调度器,其中包括运行监测模块、调度决策模块和迁移操作模块。通过高能效的资源调度来整合最少数量的活跃服务器,并最大限度减少云计算数据中心内的网络流量。首先,运行监测模块搜集云平台上每个物理主机的预测过载信息,当检测到预测过载的物理主机则触发后续操作;而后,调度决策模块综合分析各物理主机的资源使用状况,选择预测将要过载的需要调出的源物理主机及其上部署的虚拟机,以及需要调入的目标物理主机;最后,迁移操作模块调用虚拟机迁移接口,将源虚拟机迁移到目标主机。
3 高能效资源调度框架
本文提出的基于虚拟机聚合的云平台高能效资源调度框架,适用于物理主机具有不同的资源配置的异构云计算平台。如图 2 所示,该框架主要由虚拟机资源预测器、物理主机过载预测器、虚拟机放置模块和虚拟机迁移模块等构成。
图2:云平台资源调度框架
3.1 虚拟机资源预测
本文所提出的资源调度框架可以应用于虚拟机和物理主机的多维度资源管理,为了简化描述,这里仅考虑最重要的CPU 和内存资源。每台虚拟机i 中部署了虚拟机资源预测器,搜集该虚拟机的CPU 和内存资源,并结合其他参数预测该虚拟机将来的CPU 需求和内存需求。在每个周期结束时,预测下个周期该虚拟机的资源需求量。由于虚拟机的资源使用无法准确预测,本文基于Lasso 回归模型使用虚拟机的历史资源使用数据来预测虚拟机将来的资源使用情况。
回归模型可用于拟合虚拟机资源使用情况的变化,Lasso 回归模型与多项式回归、简单线性回归、支持向量回归等回归模型相比,能够在更短的时间内拟合收敛且具有较高的准确性。因而,本文使用Lasso 回归模型[20]建模虚拟机的资源需求变化,回归拟合虚拟机各类资源历史监测数据的变化情况,预测虚拟机下个阶段虚拟机的CPU、内存等虚拟资源的使用数量。本文基于该模型预测虚拟机的资源需求,模型的输入为历史多维资源向量表示在时刻t,虚拟机的CPU 和内存资源使用量,对其做标准化处理,作为Lasso 回归模型的输入变量。模型的输出为(t+1)时刻的多维资源向量:
其中,n 表示该虚拟机监测到此前资源监测向量的时间间隔数量,Xt表示时刻t 虚拟机的资源监测值,ωt为Xt对应的回归系数,α 为随机误差项。在约束条件下,通过坐标下降法极小化误差项构建该模型。
3.2 物理主机过载预测
每台物理主机j 中部署了物理主机过载预测模块,监测在该物理主机上部署的所有虚拟机所占用的CPU 和内存数量。物理主机j 的CPU 和内存数量表示为和,资源聚合后的CPU 和内存需求表示为和。那么,在资源聚合后,预测物理主机将具有可用的资源为和
3.3 虚拟机放置
虚拟机放置模块决定新提交请求虚拟机的放置位置,并且处理虚拟机释放事件。新虚拟机放置需要同时考虑节约操作所造成的能耗,以及最小化物理主机过载的概率。在将新虚拟机放置到物理主机之后,为虚拟机部署资源预测器模块,用于监控虚拟机的当前资源需求,并进行未来资源需求的预测。
当从客户端接收到虚拟机释放请求时,虚拟机放置器释放为虚拟机分配的CPU 和内存资源,更新与虚拟机相关联的系统参数以及物理主机的资源使用参数。如果在释放虚拟机之后物理主机变得空闲,则将物理主机从活动状态切换到休眠状态以节省能源。当客户请求虚拟机时,该模块进行以下操作:
(1)查看是否有活动物理主机能够提供足够的CPU 和内存资源以处理虚拟机放置的资源需求,以避免唤醒休眠的物理主机,从而可以节约从休眠到活动状态转换所消耗的能源。
(2)如果多个活动物理主机可以适合所提交的虚拟机放置请求,则挑选具有最大预测可用资源的物理主机来托管所提交的虚拟机请求,以便降低在该放置之后过载的机会。计算可用资源度量为,选择该值最大且符合虚拟机放置可用资源条件的活动物理主机放置。
(3)如果没有活动的物理主机满足要求,只能将虚拟机放置在休眠的物理主机上,则将该虚拟机放置在具有最大容量的休眠物理主机上,因为该物理主机接下来可以接收更多数量的虚拟机放置请求,减少了将来唤醒另一个休眠中的物理主机的概率。计算配置资源度量选择该值最大的休眠物理主机,将其状态转换为活动,而后进行放置。
3.4 虚拟机迁移
该模块用于确定预测过载物理主机上托管的哪些虚拟机需要迁移,使得该物理主机上预测的CPU 和内存总需求量保持在该物理主机的总容量之下。物理主机应具有足够的CPU 和内存资源以承载被迁移的虚拟机,因而需要知道所有物理主机的可用资源,预测在迁移过后物理主机不会过载。同时,为了做出有效决策,该模块需要已知物理主机上托管虚拟机的迁移能耗开销成本。在迁移之前,模块通过虚拟机资源预测模块得到预测的虚拟机资源相关信息,物理主机处于活动或者休眠状态,以及物理主机的状态信息。在执行迁移操作之后,更新虚拟机和主机映射对应关系,以及主机活动或休眠状态。
为了避免违反服务质量约束条件,当虚拟机过载时必须进行迁移操作,因此将哪台虚拟机迁移到哪台主机可以形式化定义为如下优化问题:
(1)决策变量:如果虚拟机i 迁移到主机j,则变量xij=1,否则xij=0;如果至少一台虚拟机将调度迁移到主机j,则yj=1,否则yj=0。
(2)目标函数:虚拟机迁移能耗表示从过载物理主机上迁移虚拟机的能耗开销,目标是最小化虚拟机迁移开销,由虚拟机迁移能耗和物理主机状态切换能耗等两部分组成,可以表示为:
其中,Ovm为预测过载虚拟机集合,P 为物理主机集合;当虚拟机i 迁移到物理主机j,如果该物理主机不是当前虚拟机i 所在物理主机,则迁移开销为aij,否则为0;物理主机状态切换开销表示物理主机从休眠状态切换到活动状态,部署所迁移的虚拟机所需要的能耗bj,否则,如果主机j 已经处于活动状态,则bj=0。
(3)约束条件:每台预测过载的虚拟机必须分配到其中一台物理主机上,即同时,虚拟机调度到的物理主机时,物理主机的可用CPU 和内存资源数量必须要在可用范围之内,即
这样,虚拟机迁移问题可以抽象化描述为整数线性规划,求解的复杂度随着虚拟机和物理主机规模的扩大而增加。为了降低优化问题求解的复杂度,避免决策迁移当前所有过载物理主机上的虚拟机,本文每次只考虑一个过载物理主机,决定该过载物理主机上的所有虚拟机,以及应该迁移到的目标物理主机位置,从而求解更小范围的优化问题。
本文优先考虑将虚拟机迁移到已经启动的活动物理主机,在候选活动物理主机列表中,根据可用资源度量从大到小降序进行排列。按照首次合适的原则,当虚拟机在物理主机列表中首次找到有足够空间的可用物理主机,就进行部署操作。如果找不到合适,则从休眠物理主机中列表中,按照配置资源度量从大到小寻找合适可用物理主机,从而避免物理主机从休眠状态到活动状态切换所造成的能耗开销。
4 结论
本文提出一种节能、高性能、低成本的高效能虚拟聚合放置策略,在相同的物理主机上处理不同用户多种类型的虚拟机请求,设计虚拟机在云平台异构物理主机的放置位置,从而在性能和用户成本限制的条件下,最大限度地降低基础设施能耗。该框架首先预测虚拟机的未来资源利用率,并使用这些预测结果做出虚拟机迁移决策,以提高虚拟机的资源利用率。而后,预测物理主机过载的发生,并在过载之前触发虚拟机迁移操作,以避免违反服务质量协议。最后,通过确定要迁移哪些虚拟机以及哪些物理主机需要托管迁移的虚拟机来执行高能效的虚拟机迁移,从而达到迁移能耗开销和活动物理主机数量最小化的目标。