云计算环境下基于虚拟机的动态资源分配

无聊翻译的,北大肖臻团队的paper,以及

爱看不看,翻译错了就错了,不喜欢可以关掉,最下面翻译的奇怪是因为我懒得贴引用文献了。

原文地址

https://sci-hub.se/10.1109/TPDS.2012.283

概要

云计算允许用户根他们的需要增加和缩小他们的资源规模。云模型中被吹捧的收益来自于通过虚拟化技术进行的资源复用。在这篇论文,我们提出系统使用虚拟化技术去根据应用程序的需求,并使通过优化使用中的服务器数量来支持绿色计算。我们引入了偏度的概念来衡量服务器多维资源利用率的不均衡性。通过最小化偏度,我们可以组合不同类型的工作负载很好的提高资源的总利用率。我们开发了一套启发的方式,能在节省能源的同时,有效防止系统过载。跟踪实验的仿真和结果表明,该算法具有良好的性能。

索引词汇-云计算,资源管理,虚拟化,绿色计算

简介

云计算的弹性和提供更少的前期投资吸引了许多企业。关于云模型的好处和成本,以及如何移动遗留的应用程序到云平台上有很多讨论。如今我们学习到了不同的问题:如何提供最多样的虚拟机资源在物理硬件之上。云服务提供商如何最佳地将其虚拟资源复用(或复用)到物理硬件上?这一点很重要,因为大多被吹捧的收益都来自于这种多路复用。研究发现,许多数据中心的服务器往往很大程度上未得到充分利用,这是由于对峰值需求的过度规划。云模型有望使这种做法变得不必要,通过根据响应和负载的变化进行自动伸缩。除了减少硬件成本之外,这在大型数据中心的运营费中占了很大一部分。

虚拟机监视器(VMMs)如xen 提供了一种将虚拟机(VM)映射到物理资源的机制。这种映射在很大程度上对用户来说是隐藏的。一个使用AmazonEC2的服务的用户为例,她不知道它们的VM实例在哪里运行。由云提供商来确保底层物理机器(PM)有足够的资源来满足其需求。虚拟机实时迁移技术使在应用程序运行时更改虚拟机和PM之间的映射成为可能。但是仍存在一个策略问题,如何决定自适应的映射,从而在最小化所使用PM数量的同时满足VM的资源需求。当虚拟机的资源是异构时,这是具有挑战性的,因为它们运行的应用程序多种多样,并且随着工作负载的增长和收缩而随着时间变化。物理机的容量也可能是异构的,因为多代硬件共存于一个数据中心。pm的容量也可以是异构的,因为数据中心中可以共存多代硬件。

我们的目标是在我们的算法中实现俩个目的:

  • 避免过载:物理机的容量必须足以满足VM所有虚拟机对资源的需求。否则,物理机负载过重,可能导致虚拟机性能下降。
  • 绿色计算:只要能满足所有虚拟机的需求,就尽量减少PM的数量。可以关闭空闲的物理机节省资源。

面对虚拟机不断变化的资源需求,这俩个目标之间存在固有的权衡。为了避免过载,我们应该保持低的PM利用率,减少VM的资源需求增加时过载的可能性。为了绿色计算,我们需要保持物理机合理的高利用率义有效利用它的能量。

在这个论文中,我们目前设计和实现了自动化的资源管理系统,这在两个目标之间达到了很好的平衡。我们做出以下贡献。

  • 我们开发了资源分片系统,它可以在系统中有效避免过载的同时最大程度减少服务器的数量。
  • 我们进入了偏度的概念去确保服务器的不均衡利用率。在最小偏度下,我们可以在多维资源约束的情况下,提高服务器的整体利用率。
  • 我们设计了负载预测算法,它可以准确检测应用程序未来资源的使用情况,而无需查看虚拟机的内部。这个算法可以捕获资源使用模式的上升趋势也可以帮助减少虚拟机的迁移频率。

论文的其余部分组织如下:章节2提供了我们系统的概述,章节3描述了预测资源占用的算法。详细信息在第4节介绍,第5节和第6节分别给出了仿真和实验结果。章节7讨论了相关的工作,章节8是结论。

2系统总览

系统的体系结构如fig1。每个PM运行Xen管理程序(VMM)EachPM运行Xen虚拟机监控程序(VMM),它支持特权域0和一个或多个域U。每个VM在主要域U中封装一个或多个应用,比如web服务,远程桌面,DNS邮箱,MapReduce等。我们假设所有物理机共享后端的存储。

Usher 框架我也不知道是什么

https://www.usenix.org/legacy/events/lisa07/tech/full_papers/mcnett/mcnett_html/index.html

使用Usher框架管理VM到PM的多路复用。主要的逻辑是通过实现Usher的插件进行的。每个节点运行Ushel的本地节点管理(LNM)在domain 0 这个集合上,其收集该节点上每个VM的资源使用统计信息。在Xen中CPU和网络是可以根据事件调度计算的。然而,虚拟机的内存占用对于管理程序来说是不可见的。一种方法是通过观察虚拟机的交换活动来推断其内存不足。不幸的是,客户操作系统要安装一个单独的交换分区。此外,发生的时候来调整存储器可能为时已晚。作为替代,我们实现了工作集探测器(ws prober)在每个管理程序以估计在其上运行的虚拟机的工作集大小。我们使用VMware ESX Server中相同的随机页面采样技术。

每个PM手机的统计数据被转发到Usher中央控制器(Usher CTRL),我们的VM调度器在那里运行。VM Scheduler定期调用并从LNM接收VM的资源需求历史,物理机的容量和负载历史,还有当前vm在物理机中的布局。

调度器有几个组件。预测器基于过去的统计数据预测虚拟机未来的资源需求,物理机将来的负载。我们通过聚合虚拟机的资源使用情况来计算物理机的负载。负载预测的算法将会在下面的章节中阐述。LNM在每个节点上首先尝试通过调整共享同一VMM的VM资源分配来满足新的需求。Xen可以在CPU调度程序中调整他们的权重来更改虚拟机之间的CPU分配。MM分配器在每个节点域0上,负责调整本地内存的分配。

VM调度器中的热点解析器如果发现一些物理机的资源利用率超过了热阈值(也就是热点)。如果这样,一些运行在其上的虚拟机将被迁移以减少其负载。一些冷点(我不知道怎么翻译,总之懂的都懂)解析器检查活动的物理机平均利用率(APM)是否较低到了绿色计算阈值之下。如果这样,其中一些可能被关闭以节省能源。他确定了哪些物理机的利用率低于冷阈值(也就是冷点),然后尝试迁移掉它们的所有VM。它们能编译虚拟机的迁移列表然后通过 Usher CTRL进行执行。

3预测将来资源占用

我们需要预测将来虚拟机需要占用的资源。之前说过,我们关注网络应用。一种解决方案是查看VM内部应用程序级别的统计信息,一个解决方案是查看虚拟机内部的应用层统计信息,例如通过解析待处理请求的日志。这样做需要修改配置,这可能并不总能可行。我们的首次尝试是使用类似于TCP的方案来计算指数加权移动平均值(EWMA)。其中E(t)和O(t)分别是时间t的估计负载和观察负载。α反应了稳定性和响应性之间的权衡。

指数加权移动平均(Exponentially Weighted Moving Average,简称EWMA)是一种用于拥塞控制算法中的统计方法。TCP使用EWMA来估计网络的往返时间(Round Trip Time,RTT),进而帮助确定合适的重传超时时间以及调整拥塞窗口的大小。

α(alpha)是由用户或分析师预先设定的一个参数。α被称为平滑常数(smoothing constant)或平滑因子,它的值决定了最近观测值在EWMA中的相对重要性。

当α接近1时,最近的数据点对平均值的影响最大;当α接近0时,最近的数据点对平均值的影响最小,更多的历史数据会被考虑进来。

我们使用了EWMA共识,去预测我们大学的DNS服务的CPU负载。我们测量了每分钟的负载和预测下一分钟的负载。

如fig2所示,返回值的结果是α=0.7,每个在图中的点是观测到的数据,而曲线代表着预测数据。看上去,曲线穿过点的中间,这表示相当的准确。这也是被证实的统计在Table1中。

负载预测算法

负载预测算法

括号中的参数值是α的值。W是测量窗口的长度。median error是观测后计算的百分比。|E(t)-O(t)|/O(t).high error和low error的百分比分别是,高于或低于预测值的百分比。所以我们能看到预测是非常精确的,较高值和较低值的百分比大致相等。

表面上看起来令人满意。这个公式没有反映出资源使用量上升的趋势。举个例子,当我们看到一个序列:O(t)=10,20,30,40。将下一个值预测为50是合理的。不幸的是当α在0到1之间。预测值总是落在历史值和观测值之间。为了去反应这个加速,我们使用了创新的方法去设定α的初始值。当-1<=α<0,公式可以转换为以下内容

另一方面,当观察到资源使用率下降,我们希望保守的减少我们的判断(对之后资源的判断)因此我们使用了俩种因素,↑α和↓α来分别快速控制 E(t)以适应O(t)的增大或者减小。我们叫这个快速上升缓慢下降算法(Fast Up and Slow Down (FUSD) )。如图2B展示了FUSD算法在↑α=-0.2和↓α为0.7时的有效性。(这个数的选择是基于收集了几个internet应用程序的痕迹)大多数时候预测值都高于观测值:百分之七十七见表1。中间误差增加到了9.4个百分点,因为我们用准确性换取安全。尽管如此着仍然是可以接受的。

目前为止我们用O(t)表示最后观测到的数据。大多数应用程序都会以特定百分位数的请求达到某一特定性能水平的方式来规定其SLOs(服务等级目标)。一般来说,我们保留最近观察到的W个值的窗口,并为O(t)设为这些值的高位百分位数。如图2c所示的结果,当W=8,我们取峰值资源需求的90%。该图显示,预测效果显著改善。

说人话就是,8个值确定一个数,这个有百分之90的数据都比他大(就是7个数)简单理解为拿第七个数,和第八个数的中间值作为新的红色点位

我们也研究了其他预测算法。线性自回归 (AR)模型,举个例子,在负载预测中被广泛使用。 他将预测值建模为过去观测值的线性函数。通过使用历史值来进行训练确定模型参数。AR预测器能够整合负载变化的季节性模式。例如SPAR(4,2)根据六个过去的观测值来估计MSN客户端的未来登录率,其中俩个是最新的结果,其他四个在过去四周的同一时间。

我们比较SPAR(4,2)和FUSD(-0.2,-0.7)如图。lpct的意思是低错误百分比,std的意思是标准差。俩个算法预测上文提到的DNS服务在一天之中的CPU持续占用。预测窗口是八分钟。SPAR (4,2)的标准差大概在16%小于FUSD(-0.2,0.7)这意味着SPAR(4,2)达到稍好的精度。这是因为它利用了负载的潮汐模式。然而,SPAR(4,2)既没有避免低预测,也没有平滑负载。确定参数的训练阶段的要求是不方便的。特别是当负载模式改变的时候。因此,我们采用更简单的EWMA方差。对预测算法进行深入研究是未来的工作。

正如我们稍后将在论文中看到的,预测算法在提高稳定性和执行我们的资源分配决策起着重要作用。

4偏度算法

我们引入了偏度的概念来量化服务器上多个资源利用的不均衡性。设n为资源数,我们认为ri是第i个资源利用率。我们定义服务p资源的偏度,其中r是服务器p的所有资源的平均利用率。

再实践中不是所有的资源类型,因此在上述计算中我们只需要考虑瓶颈资源。通过最小化偏度,我们可以结合不同的类型的工作负载,优雅的改善整个服务资源的利用率。下文中,我们描述了我们算法的详情。算法的分析在补充文件的第1节中给出,他可以在( http://doi.ieeecomputersociety.org/10.1109/TPDS.2012.283.)找到

冷热点

我们执行的算法基于预测将来的VM的资源需求,周期性的资源分配状态。我们定义服务的热点如果他的任一资源利用率高于热点阈值,我们将其定义为热点。这表明服务已经过载了,因此,应该迁移掉在其上运行的一些虚拟机。我们定义热点的“温度”定义为资源利用率超过热阈值的平方和。

其中R是服务器p中过载资源的集合,rt是资源r的热阈值(计算中只考虑过载资源)。温度反应了它的过载程度。如果一个服务没有过载,他的温度是0

如果服务器所有的资源利用率低于冷阈值,我们将其定义为冷点。这表明该服务器大部分空闲,有可能成为关闭以节省能源的候选对象。然而,我们仅当所有的活跃使用的服务器(即AMP)平均资源利用率在系统中低于绿色计算阈值才会这样做。如果至少有一个VM在运行,则该服务处于活动状态。否则,他就是闲置的。最后我们将暖阈值定义为资源利用率水平,该水平足够高,足以证明服务器运行是合理的,但不会高到在应用程序资源需求的临时波动时有成为热点的风险。

热点缓和

我们按温度递减对系统中的热点进行排序(即,我们优先处理最热的)。我们的目标是尽可能消除所有热点。否则,尽可能保持低温。对于每个服务p,我们首先决定迁移掉它的哪些服务。我们根据该虚拟机迁移后服务器的最终温度来对虚拟机列表进行排序。我们的目标是迁移掉最能降低服务温度的虚拟机。在平局的情况下,我们选择移动可以最大减少服务偏度的vm。对于列表中的每个VM,我们可以找到能容纳它的目标服务。这个服务在接收了VM之后不能成为热点。在所有服务器之中,我们选择了一个通过接收这个VM能最大减少偏度的服务器。请注意,这个减少可能是负的,这意味着我们选择的是偏度增加最少的服务器。如果找到了目标服务,我们记录VM到该服务器的迁移,并更新相关服务器的负载预测。否则,我们将继续处理列表中的下一个虚拟机。尝试为它找到一个目标服务器。只要我们能为其任何VM找到目标服务器,我们认为算法运行成功,然后进入到下一个热点。注意,算法的每次运行,最多会从过载的服务器中迁移出一个VM。这并不一定能消除后热点,但是至少降低了温度。如果它在下一个决策运行中仍然是热点,算法将会重复它的执行。可以设计算法已实现在每次运行时可以迁移多个虚拟机。但这可能会在相关服务已经过载的时候,这可能会给他们增加更多的负载。我们决定使用更保守的算法,在启动其他迁移之前。

绿色计算

当活动服务的资源利用率降低了,它们的疫情中一些可以关机以节省能源。这是我们在绿色计算算法中处理的。挑战之处在于在低负载时减少活动的服务数量,而不牺牲现在或将来的性能。我们需要在系统中避免震荡。

当所有活动的服务资源低于绿色计算的阈值,我们的绿色计算算法就执行。我们根据冷点的内存大小的升序对系统中冷点的列表进行排序。因为我们需要迁移掉它的所有虚拟机然后我们才能关掉未充分利用的服务器,我们定义了冷点的内存大小为虚拟机运行时的总内存大小。回想一下,我们的模型假设所有虚拟机都连接到共享后端存储。因此,虚拟机存活时迁移主要由他的内存占用决定。补充文件中的第七章,解释了问什么内存是一个很好的衡量标准。我们首先设法以最低的成本消除冷点。

对于冷点p,我们检查是否将其虚拟机迁移到其他地方。对于p上的每个虚拟机,我们尝试找到目标服务容纳它。服务的资源利用率在接收了VM之后,必须低于暖阈值。我们通过整合为充分利用的服务器以节省能源,但是过多使用,可能导致为了会出现热点。暖阈值的设计就是为了预防这件事情。如果多个服务满足上述标准,我们会更偏向于当前不是冷点的。这是因为增加冷点的负载减少了他们可以被消除的可能性。然而,我们将接受冷点成为目标服务在必要的时候。在所有条件相同的情况下,我们选择目标服务,该目标服务的偏度可以最大程度在接收这个VM之后减少。如果我们能在冷点上找到所有虚拟机的目标服务器,我们记录迁移序列,更新相关服务的预测负载。否则,我们不悔迁移其任何虚拟机。冷点列表页同时更新,因为由于在上述过程中提出的VM迁移,它们中的一些可能不再是冷的。

上述整合为相关服务器增加了额外的负载。在热点迁移案例中这不是一个严重的问题,因为绿色计算只会在系统负载降低的时候开始。尽管如此,我们还是想限制由于服务器整合带来的额外的负载。我们将每次运行算法可以消除的冷点数量限制为不能超过系统中活动服务器的一定百分比。这被叫做合并限制。

请注意只有当所有活动服务的平均负载低于绿色计算阈值,我们才会在系统中消除冷点。否则,我们保留这些冷点,它们可能在未来成为(被迁移的)目标服务器。这和我们的理念一致,即绿色计算应该保守进行。

合并变动

上述每个步骤产生的迁移操作,都不会立即执行,而是要等到所有步骤都完成之后才一起执行。然后合并动作列表,每个VM最多移动一次到其最终目的地。举个例子,热点迁移可能决定虚拟机移动从物理机A到物理机B,但是绿色计算决定从物理机B移动到物理机C,在实际执行的时候,VM只会从A直接移动到C。

5模拟

我们采用跟踪的仿真方法来评估我们算法的效果。注意,我们的模拟使用与实验中所使用的算法相同的代码。这确保了模拟结果的准确性。追踪每分钟服务资源的利用率,比如cpu占用,内存使用,网络流量统计,收集使用类似perfmon(windows),/proc文件系统(linux),pmstat/vmstat/netstats(Solaris)等。原始痕迹被预处理为“Usher”格式,所以可以在模拟中读取它们。我们从各种来源收集了痕迹:

Linux proc文件系统是一个虚拟文件系统,它提供了一种在运行时访问内核数据结构的方法。它是内核与用户空间之间的接口,用户可以通过读写proc文件系统中的文件来获取或修改内核的各种信息

  • Web InfoMall:中国最大的网络档案(即美国互联网档案馆的对应机构)拥有超过30亿个存档网页。
  • RealCourse:这个最大的在线远程交互系统,分布在13个主要城市
  • AmazingStore:中国最大的P2P存储系统。

我们同时收集了在我们大学中服务器和个人电脑的占用,包括我们的右键系统,中央DNS服务,和在部门中的电脑。我们根据收集的天数对痕迹进行了后处理,我们使用随机抽样和对数据集进行线性组合的方式来生成所需的工作负载。除非另有说明,否则本节中的所有模拟都使用真实的跟踪工作负载。

默认参数我们使用表格2,我们使用FUSD负载预测算法,↑α=-0.2和↓α为0.7,W=8。在一个动态系统中,这些参数代表了良好的控制点,可以用来自适应地调整系统的性能。我们根据使用许多互联网应用程序的经验选择默认参数值。在未来,我们计划探索使用人工智能或控制理论方法来自动找到接近最优的值。

阈值对APM的影响

我们首先评估我们算法中各种阈值的的效果。我们系统模拟了100个物理机和1000个虚拟机。我们初始布局使用随机的虚拟机和物理机映射。调度器每分钟执行一次。

图fig4的底部显示了系统日常负载的变化,X洲是一天的时间从八点开始。y轴是负载有俩种含义:占用量的百分比或者活动物理机所占的百分比。回忆一下,如果虚拟机是活动的,那么它至少有一个VM在运行。如图所示,CPU负载展现出昼夜模式,午夜之后显著下降。随着时间的推移,内存消耗相当稳定。网络利用率一直很低。

图fig4的顶部展示了活动物理机占用的百分比在我们算法使用不同阈值时是如何变化的。举个例子,h0.7 g0.3 c0.1分别代表着热阈值绿色计算和冷阈值是70,30和10个百分点。图中未展示的参数采用表2中的默认值。我们的算法可以通过调整阈值来让他更激进或者不那么激进。图中展示了更加第的热阈值将导致更加激进的迁移,以缓和系统中的热点并增加活动物理机的数量,更高的冷点和绿色计算阈值导致更激进的合并,这导致了更少的活动物理机。使用表2中的默认阈值,我们算法中APM百分百会很贴近负载模式的变化。

为了检验我们算法在更极端情况下的性能,我们也创建了人为的负载,它模仿了正弦函数(仅包含正数部分),它们的范围在15%-95%,具有20%的波动。它的峰值与平均值的比例要远大于实际的负载跟踪数据。结果在补充文件的第二节中,可以在计算机社会数字图书馆找到。

算法的可扩展性

我们通过在模拟中将虚拟机的数量从200变到1400以评估我们算法可扩展性。VM与物理机的比例是10:1。结果如图fig5所示

算法随系统大小的可扩展性

算法随系统大小的可扩展性

5a展示了,我们算法的平均时间随着系统的大小增长而增长。增长速度介于线性和指数之间。我们将决策时间分为俩部分:热点迁移(标记为热)和绿色计算(标记为冷)。我们发现热点迁移对决策时间的影响更大。我们还发现,人造的工作负载决策时间比真实的更高,这是由于人造的工作负载变化更大。在140个物理和1400和虚拟机的情况下,人造的负载预测时间大约在1.3秒,但真实跟踪的负载只需要0.2秒。

图5b显示了在每次决策过程中,整个系统中平均发生的迁移次数。数量在系统中是非常小的,大致随系统大小线性增加。我们发现热点对于迁移数量的影响更大。我们也发现在人造负载中迁移数量要高于真实负载中迁移的。140个物理机和1400个虚拟机,对于合成的工作负载,我们算法平均每次运行在整个系统中会导致大约三次迁移,而对于真正的跟踪只有1.3次迁移。图5c也验证了这一点,图5c计算了每个决策中每个VM的平均迁移次数。该图表明,在决策运行期间每个虚拟机都会经历少量的大致恒定的移动,而无关与系统大小。这个数在人造负载中大约是0.0022,在真实的跟踪中是0.0009。这分别转化为大约每456或1174个决策间隔一次迁移。固定在我们的算法中是非常好的。

我们还通过改变虚拟机和VM和虚拟机的比例来进行模拟。VM与PM的比例越高,负载在PM之间的分布就越均匀。结果显示在补充文件的第四节中,它可以在网上找到。

负载预测的效果

我们在图6中比较有负载预测和无负载预测时算法的执行情况。当负载预测禁用时,算法在决策过程中仅仅使用最近观察到的负载情况。如图6所示,负载预测显著减少了系统在决策运行期间的平均热点数量。值得注意的是,预测在1400个VM的模拟中阻止了超过百分之46的热点。在没有预测的情况下,一旦物理的负载到了阈值以下,算法会尝试合并物理机。如果有预测,算法正确的预见到物理机的负载很快增加到阈值以上,因此不采取任何行动。这使得PM在一段时间内处于冷点状态。然而这同时减少了迁移震荡在避免了不必要的迁移导致的负载波动。因此,系统中迁移的数量有预测的小于没有预测的系统,如图6所示。系统中有更多的冷点唯一的缺点是增加活动物理机的数量。如图6所示,这表明在有或没有负载预测的情况下,活动物理机的平均数量基本保持相同。这很有吸引力,因为过载保护,可以在不牺牲资源效率的情况下实现。如图6c,在比较具有和不具有负载预测的每个决策中每个VM的平均迁移次数。它表明,每个虚拟机在负载预测的情况下,迁移次数少了17%。

6实验

我们实现使用了30组PowerEdge刀片服务器,配置是Intel E5620 CPU,24G内存。服务运行在 Xen-3.3和Linux2.6.18上。我们定期使用xenstat库(与xentop一样)读取负载统计。我们服务通过千兆网连接到一组4个NFS存储服务器,我们的VM调度器在其中运行。我们使用模拟中相同的默认参数。

算法有效性

在绿色计算和过载迁移中,评价我们算法的有效性。

我们从一个由三个物理机组成的小规模实验开始,以便我们可以在图上显示所有服务器的结果在图7中。每个虚拟机显示了不同的色调。所有的虚拟机配置有128M的内存。每个虚拟机上都运行着apache服务。我们使用httpref去调用CPU密集型的PHP脚本。这允许我们通过调整客户端请求率来使不同程度的CPU负载。其他资源的利用率保持在较低水平。

我们首先增加三个虚拟机中PM1的负载,以产生过载。我们的算法解决了过载通过迁移到虚拟机3到物理机3。它在高负载下大约420秒达到稳定状态。在890秒左右我们主键降低CPU的负载。因为在负载增加时FUSD预测算法是保守的,因此绿色计算需要一段时间才能生效。大概1700秒之后,VM3被从PM3迁移到了MP2,所以使得PM3可以被置于待机模式。大约2200秒,PM1上的俩个VM迁移到了PM2,所以PM1可以被很好的释放。随着负载身高和降低,我们的算法能够重复上述的处理:根据VM的需要分散或者聚合。

接下来我们扩大实验规模至30台服务器。我们对于实验使用TPC-W基准测试。TPC-W是电子商务应用行业标准测试。它模拟了客户浏览和购买的行为。我们最开始在每个服务上部署了8个VM。每个VM配置有1个虚拟机CPU和2GB的内存。每个VM运行着TCP-W基准测试的服务端应对各种类型的工作负载:流量购买,混合负载等。我们的算法每十分钟运行一次。

图8展示了:APM的数量变化随着平均请求数量在虚拟机中随着时间的变化。我们一开始保持每个虚拟机的负载都很低。结果绿色计算任务执行,聚合虚拟机到数量酱烧的服务器上。注意每个TPC-W服务,即便他们闲置,也会消耗数百字节的内存。在俩个小时后,我们明显增加了负载去模仿“瞬间拥挤”事件。

指当一个受众广泛的网站介绍了另一个小众的网站后,小众网站流量激增的现象。小网站流量的激增使得它的访问速度变慢或者一时间完全不能访问。

算法唤醒备用服务去减轻热点服务。如图所示,APM的数量响应的增加。在请求峰值率达到一个小时后,我们逐渐减少了负载以模拟瞬间拥挤结束了。这个绿色计算器再一次被触发,聚合了还在使用的服务。如图8所示,在实验过程中,AMP数量的上升速度远远大于他们的下降速度。这是由于使用了我们的FUSD负载预测。图中也展示了残余的APM数量在瞬间拥挤后轻度身高。这是因为TCP-W服务残留了一些数据缓存所以内存使用不能回到原来的级别。

为了量化能源效果,我们通过在刀片服务器中嵌入water表,测量了各TCP-W工作负载的弹性能源消耗。我们找到了闲置的刀片服务,我们发现一个闲置的刀片服务器大概消耗130瓦,一个满载的服务大概消耗205瓦。在上述的实验环境中,服务有平均百分之48的时间处于待命状态,这是由于绿色计算。这大概可以转换成每个服务省电62瓦或者实验中30台使用的服务器1860瓦。

实时迁移的影响

一个关于虚拟机使用实时迁移对应用执行影响的担忧。先前的研究发现这种影响很小。我们在我们的实验中调查它的影响。我们在我们上述的三十个实验服务器中提取了340次实时迁移的数据。我们关注这些迁移因为它们潜在影响应用的执行可能性很大。再139个迁移之中,我们随机选择了7个相同的经历过迁移的TCP-W会话。这些会话运行着模拟200个浏览器购物混合的负载。对于比较的目标,我们使用相同参数重新进行绘画,但是不执行迁移并使用返回的结果作为基准。

如图9所示,7个绘画标准的每秒的web交互(Web interactions per second WIPS)WIPS是 TPC-W的性能指标。改图显示,大多数实时迁移的绘画在执行时没有表现出明显的对比于基准的下跌:标注的WIPS是接近1。只有会话3除外,唯一的例外是会话3,在原来的实验中,它的性能下降是由极其繁忙的服务器引起的。接下来我们仔细看图9中的一个会话,并在图10中展示,她的性能随着时间的变化。

图中的点展示了WIPS的每一秒。俩条曲线展示了TPC-W在30分钟窗口内的计算。我们在图中标记了迁移的开始和结束。当自膨胀开启时,内存占用转移在传输时大概是600MB。

self-ballooning是一种动态内存管理技术,它可以帮助虚拟机(VM)根据自身的实际内存需求来调整自己的内存占用

图中证实了,试试迁移并不会导致性能下降。迁移的持续时间小于10秒。回想一下我们的算法每10分钟调用一次。

资源平衡

回想一下偏度算法的目标是混合不同资源请求类型到一起,所便提升服务的总利用率。在这个实验中,我们看到了,我们的算法是如何处理混合了CPU,内存,网络和网络密集的工作负载。我们像之前一样改变CPU负载,我们向VM发送一系列网络请求包来注入网络负载。内存密集型应用是通过按需分配内存创建的。我们再次启动了规模的实验,俩个物理机和四个虚拟机,这样我们就可以在图11中展示所有实验的结果。

俩行代表了俩个PM,俩列分别代表了CPU和网络层,实验中内存消耗被保持在很低。

最初俩个在PM1上的虚拟机是CPU密集型的,俩个在PM2上的VM是网络密集型的。我们增加了它们瓶颈资源的负载。大概500秒,VM4从PM2迁移到了PM1,由于PM2上的网络过载了。接下来大概600秒,VM1从PM1迁移到了VM2,由于PM1的CPU过载了。现在系统到达了稳定状态,让俩个PM都有平衡的资源利用。每个都有一个CPU密集型虚拟机和网络密集型虚拟机。我们会逐渐减少俩台VM的占用让俩个PM来到冷点。我们可以看见俩个在PM1上的虚拟机合并了PM2通过绿色计算。

接下来我们增加了实验规模,72组VM运行在8个PM上。一般的VM是CPU密集型,其他的一半是内存密集型。最开始,我们保持所有VM在低负载,部署CPU密集型在PM4和PM5上,而所有内存密集型的虚拟机在PM6和PM7上。然后我们增加了所有虚拟机的负载缓慢的让底层PM成为热点。

图12站了算法如何随着时间推移将VM扩展到其他PM。我们可以在图中看到,算法适当的平衡了俩个类型的虚拟机。图中也展示了,随着负载的增加一组物理机之间的负载变的更加平衡

7相关工作

应用程序级别的资源分配

自动扩展web应用先前在Managing Energy and Server Resources in Hosting Centers,和A ScalableApplication Placement Controller for Enterprise Data Centers,针对数据中心环境进行了研究。在MUSE中,每个服务都有web应用的副本运行在系统中。

L7-switch是一种应用层交换机,它工作在OSI模型的第7层(应用层)。与传统的第2层和第3层交换机不同,L7-switch能够根据应用层协议(如HTTP、FTP、SMTP等)的内容对数据包进行深度分析和转发决策。

Windows Live Messenger是一款即时通讯软件,由微软公司开发和发布

前端的调度算法L7-switch确保请求合理的服务同时减少为充分使用的服务数量。工作使用了网络流量算法在运行的实例中分配应用的负载。对于链接网络导向的服务像Windows Live Messenger,“Energy-Aware Server Provisioning and Load Dispatching for Connection-Intensive Internet Services”提出了一种复杂调度和服务配置集成的方法。以上工作都不适用虚拟机,而是要求应用程序采用多层架构的设计,并通过前端调度器提供负载均衡功能。相比之下,我们的工作针对的是Amazon EC2风格的环境,在这种环境中,对应用程序在虚拟机内部的构建方式和内容没有任何限制。虚拟机的处理就像个黑盒。仅在整个虚拟机的粒度上进行资源管理。

MapReduce是是另一种受欢迎的受欢迎的云服务其中数据局部性是性能的关键。Quincy在任务调度中采用最小成本流量模型使最大化数据局部性。同时保持不同工作的公平性。延期调度算法用执行时间换取数据局部性。工作为作业和用户分配动态优先级,以便于资源分配。

实时迁移虚拟机的资源分配

虚拟机迁移在虚拟机环境中进行动态资源分配是普遍使用的技术。我们的工作也属于这一类。Sndpiper合并了多维度的负载消息到一个Volume指标中。它根据每个PM(物理机)的体积对PM列表进行排序,并根据每个PM中VM(虚拟机)的体积与大小比率(VSR)对VM进行排序。不幸的是抽象了做迁移决策时需要的关键信息。然后,它按照预排序的顺序考虑PM(物理机)和VM(虚拟机)。我们给了具体的例子,在附加文件的第一张中,可以在互联网上找到,他们的算法在超载期间选择了错误的虚拟机进行迁移,无法减轻热点。我们还讲我们的算法和他们的算法在实际实验中尽显了比较。结果的分析在附加文件的第五节,可以在网上找到,展示了他们行为的不同。此外,它们的 工作还不支持绿色计算还和我们在负载预测等方面有许多不同。

鸿蒙系统跨多个资源层应用虚拟化技术。它使用了虚拟机和数据迁移环节热点,不仅在服务还包括网络设备和存储节点。它引入扩展向量积(Extended Vector Product (EVP))作为不平衡资源利用率的指标。他们的负载均衡算法是用于多维背包问题的Toyoda方法的一种变体。

多维背包问题(Multidimensional Knapsack Problem, MKP)是背包问题的一种扩展形式。在经典的背包问题中,你有一个容量固定的背包,以及一组具有重量和价值的物品。你的目标是选择一些物品放入背包,使得总价值最大化,而总重量不超过背包的容量。

首次适应近似算法(First-Fit Approximation Algorithm)是一种用于解决装箱问题(Bin Packing Problem)的启发式算法。装箱问题的目标是将一组物品放入尽可能少的固定容量的箱子中。这种方法的主要优点是简单易实现,且在实际应用中通常能得到较好的近似解。然而,由于它是启发式算法,不保证找到最优解。首次适应算法的简单性和效率使其成为许多实际应用中常用的近似算法之一。

与我们的系统不同,他们的系统不支持绿色计算,负荷预测将作为未来的工作。在补充文件的第六章中,我们分析了VectorDot与我们的工作相比表现不同的现象,并指出了我们的算法能够更好地利用剩余资源的原因。动态安置服务以最小化SLA违规的研究在“Dynamic Placement of Virtual Machines for Managing SLA Violations,”。我们将其建模为一个装箱问题,使用著名的首次适应近似算法定期计算虚拟机到物理机的布局。然而这种算法的设计主要是为了离线使用的。当应用于虚拟机资源动态变化的在线环境,它可能会导致大量的迁移。

绿色计算

一些努力已经减少了能源在数据中心的消耗。硬件为基础的方式包括了降低冷却功率的热设计,或者或者采用与功率成比例的和低功耗硬件。工作“Virtualpower: Coordinated Power Management in Virtualized Enterprise Systems,”使用了动态电压和频率调整(DVFS)根据去调节CPU的概率。我们不将DVFS用于绿色计算,解释在附加文件的第七节中。PowerNap采用诸如固态硬盘(SSD)和自刷新DRAM等新的硬件技术,实现在完全运行状态和低功耗状态之间快速(不到1毫秒)切换,从而能够在短暂的空闲间隔期间"小憩"。当服务器进入睡眠状态时,Somniloquy会通知一个嵌入式系统,该系统驻留在一个特殊设计的NIC上,以委托主操作系统执行相关任务。它给人一种服务器始终处于活动状态的错觉。

我们的工作属于纯软件类的低成本方案。与Somnioqui类似,SleepServer作为委托在专用服务器上启动虚拟机,而不是依赖于一个特殊的NIC。LiteGreen不使用委托。相反,它会迁移桌面操作系统这样它的的桌面就可以进入睡眠。它要求使用共享存储对桌面进行虚拟化。Jettison发明了“部分虚拟机迁移”,这是实时虚拟机迁移的变体,它只迁移掉必须的服务集合同时保留不常用的数据。

8结论

我们已经展示了设计,实现了云计算服务的资源管理系统。我们使用偏度指标(skewness metric)来适当地组合具有不同资源特性的虚拟机(VM),以确保服务器的资源利用率得到良好的发挥。我们的算法实现了同时避免过载和实现绿色计算的目标,适用于具有多种资源约束的系统。

Last modification:June 7, 2024
如果觉得我的文章对你有用,请随意赞赏