一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

Abstract

弹性分布式流处理系统能够动态地适应工作负载的变化。通常,这些系统通过向上或向下扩展来对输入数据的速率或资源利用水平做出反应。目标是优化系统的资源使用,从而降低其运营成本。但是,这种扩展操作会自行消耗资源,从而为每个扩展操作引入一定的资源使用开销,从而降低成本。此外,由扩展操作引起的迁移不可避免地导致简短的处理差距。因此,应避免过多的扩展操作。

       我们通过防止不必要的扩展操作和过度配置资源对工作负载的短期变化的反应来解决这个问题。这样可以保持弹性,同时还可以最大限度地减少扩展操作带来的开销成本。为实现这一目标,我们使用信号处理领域的先进滤波技术来预处理原始系统测量Metrics,从而减少多余的缩放操作。我们执行真实的测试平台评估验证效果,并提供收支平衡成本分析,以显示我们的方法的经济可行性。

1. Introduction

       弹性是现代数据流处理(DSP)系统中的主要问题[19]。 简而言之,弹性系统能够在负载增加期间快速扩展,并且在负载减少期间缩小,而不是不断地供应不足的计算资源,即,以比处理输入数据速率所需的容量更小的容量操作。 或过度供应资源,即以超过要求的容量运行[1,25]。 利用弹性功能,流处理引擎(SPE)可以在运行时动态地适应输入数据速率的变化,从而降低成本,同时满足预定义的服务质量(QoS)级别[16]。

       可以监视DSP系统的某些属性以达到扩展决策。 一方面,观察到的属性对于系统可能是外在的,例如,输入数据或查询的速率或类型[3,20,46]。 另一方面,这些属性可能是系统固有的,例如CPU负载[16],内存利用率[7],网络流量[49]或其整体性能[4]。 通常,每个缩放操作本身都需要资源,即它会产生延迟,在此期间DSP系统必须等待计算资源可达,消耗能量,导致计算开销[14,35],因此增加成本。 其他DSP Operators,即负责处理SPE内数据的软件,必须部署在计算资源上,例如虚拟机(VM)。 因此,虽然对于弹性至关重要,但是应该将缩放和迁移等密集操作保持在最低限度[7,9,22,35]。

       目前DSP中的扩展方法假设资源利用率的阈值,例如CPU负载,作为扩展决策的基础[3,7,21,36]。 DSP系统保持在这些阈值之间。 对于超过上限阈值的任何指标,需要额外的资源,并激活新的DSP Operators实例(向上扩展)。 但是,基于阈值的缩放方法可能会导致频繁的缩放操作。 反过来,这会产生资源使用和成本的开销[3,7]。 在某些情况下,这种开销是必要的,以便从额外的计算能力中受益,避免供应不足或通过按比例缩小来节省资源。 然而,过度扩展也会增加不必要成本的风险[7,35]。

       诸如输入数据速率之类的指标可以被视为时间序列,包含数据速率的长期趋势,以及短期差异(峰值和谷值)[3]。 长期趋势可以是输入数据的发展,例如取决于一天中的时间(例如,高峰时段)或一年中的时间(例如,暑假),而短期峰值可能源于自发和短期生命事件,如网络通信中的突发事件。 后者代表我们打算忽略缩放决策的噪音。

       在此之后,我们建议通过改进缩放机制对负载变化的反应来改进DSP中经典的基于阈值的缩放。 我们不是依赖于一个Metrics并采用简单的基于阈值的缩放,而是观察SPE的多个内在Metrics(例如,CPU和内存利用率)和表示SPE环境的外在Metrics(例如,输入数据的速率)。 从这些值中,我们推导出一个估计的真实内部状态,通过将其与长期趋势分开来探测噪声(即短期方差)。 基于该估计状态,可以做出更稳定和稳健的缩放决策。 直觉是减少缩放决策的数量,同时保持DSP系统高度适应负载变化。

总的来说,这项工作的贡献如下:

  1. 我们指定一个控制回路,描述控制系统,其环境,可测量反馈和缩放控制器之间的关系。
  2. 我们定义了预处理测量资源利用率值的正式模型,以减少DSP Operators执行的扩展操作的数量。
  3. 我们提出了一种应用扩展卡尔曼滤波器(EKF)[27,29]的具体缩放机制,以便使用有关Operators环境中状态变化的知识来改进扩展决策。
  4. 我们使用具有图像处理工作量的测试平台详细评估我们的方法,该测试平台取自生物医学工程的研究领域[23]。

本文的其余部分结构如下:在第2节中,我们介绍了最小化DSP系统中缩放操作数量的方法。 然后,我们在第3节中评估该方法,并在第4节中讨论结果。在第5节中,我们审查相关工作。 最后,我们总结并概述了第6节中的未来工作。

2. APPROACH

       我们的工作目标是尽量减少缩放操作的数量,同时保持快速弹性,以避免过度频繁的缩放操作的成本[3,7,14,35]。 我们将DSP中的每个Operators分开考虑,并测量输入数据(数据速率)和系统状态,目标是达到扩展决策。 这个决定可以是(a)通过启动更多Operators实例来扩展,(b)通过关闭实例来缩小,或(c)保持相同状态。 可以使用由缩放决策确定的一个或多个Operator实例来执行每个Operator。 我们将任何给定Operator的运算符实例集表示为B,实例为b1,b2,b3,....。。 ,bn,其中n = | B |。

       这项工作扩展了使用EKF的传统信号滤波,以达到更好的缩放决策。 由基于EKF的滤波器测量的系统状态在向量中表示。 多个状态变量(Metrics)可以包含在此向量中,我们的通用过滤方法对此数字没有限制。 可能的Metrics指标包括系统的CPU负载[16],其内存利用率[7],网络流量[49],吞吐量和队列大小[12],或确定系统整体性能的其他指标[4]

       在以下部分中,我们将讨论我们的方法。 首先,在2.1节中,我们定义了一个控制回路,描述了受控系统(流处理操作员),其环境(输入数据),可测量反馈(系统状态)和缩放控制器之间的关系。 其次,在2.2节中,我们展示了时间序列过滤的正式模型。 第2.3节给出了所用EKF的详细描述,第2.4节给出了自举过程。 第2.5节讨论了我们方法的参数和复杂性。 表1概述了所使用的符号。

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

2.1 Control Loop

       我们将观察到的Operator,输入数据的速率以及控制Operators缩放决策的缩放机制视为控制系统。我们的方法涉及创建一个闭环控制回路[15],如图1所示。在运行期间,系统(流处理Operators)在输入数据的恒定供应下,由其速率测量。由于我们无法控制传入数据的数量,因此我们将其定义为运算符的environment1。流处理Operator由Scaling Mechanism控制,缩放机制是我们控制循环中的控制器。控制器负责做出缩放决定,即定义Operator是否必须按比例放大,按比例缩小或保持不变。在数据处理期间,Operator正在改变系统状态(例如,CPU负载或存储器利用),构成由控制器测量的反馈。因此,控制器具有两个用于执行缩放决策的信息源:输入数据的速率和操作员的系统状态。

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

2.2 Filtering Model

       如上所述,我们测量系统状态随时间的变化,并将我们的缩放决策基于测量值。 但是,我们采用原始测量的过滤来创建更平滑的测量Metrics曲线版本。

       记录的系统状态测量的时间序列表示为Z.实际上,那些测量值通过某个噪声偏离趋势。 此噪声可能有多种原因,包括操作系统级别的干扰,VM级别的虚拟机管理程序策略或与其他应用程序共享的工作负载。 所有这些方面都会导致系统状态(例如,CPU负载或内存利用率)出现高差异。 然而,总是存在某种趋势,例如,高要求的处理节点在其整个操作期间将具有给定的负载基线(趋势)。 图2演示了一个场景,使用CPU负载作为波动系统状态的示例。

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       当然,如果流处理系统完全基于原始数据进行缩放决策,则会发生过多的缩放操作[7,14,35]。 如图3所示,其中波动的CPU负载测量值(上图)导致大量的缩放操作(下图)。 我们的方法将过滤器应用于此过程以减少缩放操作的数量,即减少的操作符行中的步骤数, 在图3中可以表示。

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

因此,我们正式定义我们的方法如下。 我们在所有测量时间T的各个时间点t处考虑原始系统状态测量值Z的历史,其中Zt是在时间t的测量状态:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       基于原始测量Zt∈Z,我们使用滤波器,我们将其表示为λ(·),并将此滤波器应用于每个Zt。 该应用程序在每个给定的测量时间t执行,并且可以访问Z中的所有其他测量值,其实际限制是它只能访问过去的测量值。 因此,我们将λZ(t)定义为在时间t的Z的滤波值,给定所有其他值Zi∈Z,其中i≤t。 对于λ,可以使用各种滤波器。 在我们的工作中,我们使用EKF作为平滑滤波器,我们将在2.3节中描述。 其他滤波器如线性平滑(LS)[42],总变差去噪(TVD)[41]或更简单版本的EKF [3]用于文献中的平滑,但在大多数情况下不涉及DSP(参见章节)5)。

We define the set of filtered measurements Z‘:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       图4显示了使用滤波器的相同数据速率测量的可能结果图,如图3所示,以及系统的最终缩放行为。 与图3相比,显然缩放操作量已减少。 请注意,此方法无法保证在每个时间点都能满足系统状态的正确缩放。 根据使用的过滤器,还有可能在短时间内资源供应不足或过度配置资源,在线过滤的性质也是如此。 但是,我们在第3节中表明,所提出的基于EKF的滤波器表现得非常好。

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

2.3 Extended Kalman Filter

       在下文中,我们描述了我们的方法中使用的EKF,以及具体的状态转换模型。

       EKF [27]是卡尔曼滤波器(KF)的非线性推广[29]。 卡尔曼型滤波器的工作原理是定义系统状态转换的模型,以及系统观测(测量)的模型。 虽然常规KF使用纯线性转换模型,即矩阵和线性代数,但EKF推广了非线性模型的方法。 EKF使用函数作为转换模型而不是矩阵,并且要求转换和观察函数在逐点上是可微分的。

       请注意,EKF不是唯一适用于预测多变量过程的模型。 特别是在具有重复模式的高潜力的过程中,使用诸如ARMA或ARIMA的自回归模型[18,44]。 然而,基于EKF的滤波器的独特优势在于,对于底层系统模型的一些(甚至是不准确的)知识,不仅系统状态的测量结果被合并到解决方案中,而且(非常准确地知道的)系统输入。 同时,EKF维护协方差矩阵,确定每个数据源(系统状态和输入)的当前信心。

       定义EKF的第一步如下:系统状态表示为x。此向量可以包括多个状态变量(度量),例如CPU和内存利用率,网络流量,吞吐量或队列大小。由于状态随时间变化,我们使用xt来指示时间t的状态。此外,我们的系统由外部输入控制,外部输入是发送给流处理操作员的数据速率。我们观察到时间t的瞬时数据速率,定义为Dt,以及数据速率与前一个值ΔDt的变化,ΔDt= Dt -Dt-1。我们一起在给定时间t将流处理操作器的输入定义为ut =(Dt,ΔDt)。最后,由于我们的操作员在现实世界的计算机上运行,​​因此性能会有一定的波动,因此状态也会遇到特定的噪音。我们将该系统噪声表示为w,或者再次表示给定时间t的wt。最后,我们定义了状态转换模型,它根据先前的系统状态xt-1,输入ut-1和系统噪声wt对系统状态xt进行建模:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

其中f(·)表示状态转换函数,它基于最后一个状态xt和系统输入ut。 根据KF [29]的原始定义,系统噪声wt被假定为具有协方差矩阵Q的零均值高斯噪声2:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       状态转移函数f(x,u)可以独立于该状态系统的剩余部分来选择。在我们的场景中,为简单起见,我们使用线性状态转换函数,基于当前系统状态x,输入u =(D,ΔD),定义为f(x,u)= x + a· D + b·ΔD。然而,由于使用了EKF,如果存在非线性动力学并且已知,也可以使用非线性状态转换函数。矢量参数a和b定义了EKF对输入数据速率的灵敏度,并且必须根据工作负载来定义。目前,这些参数是使用普通最小二乘(OLS)线性回归确定的。未来的方法可以使用更精细的自调整技术,例如机器学习(ML)。

       接下来,我们考虑系统状态的测量。有几种用于测量系统负载的机制,例如,诸如top和ps之类的独立程序,或用于直接测量的API。 EKF定义包括测量函数,我们将其表示为h(·)。此函数采用系统状态x并将其转换为测量值。此值再次受到噪声的影响,这次是由测量过程本身决定的。我们称之为测量噪声,并将其表示为vt。对于物理传感器,这表示测量误差或不准确。在我们的场景中,此测量误差表示测量CPU负载的不准确性。得到的测量值表示为zt,定义如下:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

其中vt,测量噪声,再次假设为零均值高斯噪声,其协方差矩阵假设为R:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       与温度或光传感器等物理传感器(通常具有非线性特性或需要额外的单位转换)相比,我们不需要在测量过程中进行变换。 因此,我们可以简单地定义h(xt)= xt,我们的测量结果如下:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       图5给出了所述状态系统动态的概述。虽然系统(u)的输入是已知但不可控制的,但系统的真实状态是来自控制器的隐藏状态。这包括影响系统状态本身的噪声(w),以及测量的噪声(v)。控制器只能看到测量结果(z)。如前所述,u =(D,ΔD),f是状态转移函数,h是同一性函数h(x)= x,w~N(0,Q)和v~N(0,R) 。

       注意,EKF的一般定义允许f(·)和Q,以及h(·)和R依赖于时间t,即符号ft(·),Qt,ht(·)和Rt分别使用。由于我们在方法中使用f(·),Q,h(·)和R的时间常数定义,因此我们删除了索引t。

       因此,我们的控制器根据输入数据(u)的速率和系统状态(z)的(噪声)测量来做出扩展决策。如2.2节所述,我们不直接使用测量z,而是使用所采用的EKF的估计特征,其产生下一个系统状态的估计版本,表示为x。

       EKF的本质是它执行预测 - 更新迭代的连续循环。 给定当前状态,在预测步骤中,EKF执行下一个系统状态的预测。 此外,EKF还提供预测误差。 然后,提供实际值的(噪声)测量,EKF重新计算其预测误差,并在更新步骤中提供新的预测。 因此,EKF不断纠正其预测,提供噪声测量,同时保持测量不准确性与外部干扰之间的平衡。 此外,该过程考虑了系统的输入,即外部操纵的控制变量。 在我们的场景中,这是数据速率及其变化量,即u =(D,ΔD)。

Predict Step: 在任何时间点t,从给定的先前估计系统状态xt-1  - 初始状态(参见第2.4节,关于我们方法中的自举描述)或先前估计的状态 - 以及之前的系统 输入ut-1,EKF导出估计的先验下一个系统状态x * t,估计的下一个测量zt,以及估计误差Pt:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       其中Ft-1是f的雅可比矩阵,即当前状态和输入f?(xt-1,ut-1)的状态转移函数的偏导数矩阵,Pt是预测误差(协方差矩阵) 在时间t,Q是如上定义的系统噪声的协方差。 通过将状态转移矩阵F的雅可比矩阵应用于先前的预测误差,然后重新应用其转置FT,最后添加系统噪声协方差Q来计算Pt。该预测误差稍后将用于计算卡尔曼 获得Gt。 它的定义来自EKF建议[27]。 P0的初始化值在2.4节中讨论。

Update Step:在进行新的测量zt后,EKF更新其矩阵和向量以反映新数据。 首先,计算卡尔曼增益Gt,其用于创建新的后验系统状态估计xt。 注意,先验估计x * t和后验状态估计xt之间的差异在于后验状态将新测量(并且因此新知识)合并到由测量之前的先验状态提供的值中。

更新步骤计算如下:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       其中H是h的雅可比矩阵,即用于当前测量的测量函数的偏导数矩阵h(xt),并且R是如上定义的测量噪声的协方差。 同样,这个定义来自[27]。 卡尔曼增益Gt用于估计下一个系统状态xt,并表示测量变化对实际系统状态的(估计的)影响。

       重新审视2.2节,我们现在能够定义z的过滤版本,即Z? =λZ(zt),通过使用每个运算符实例的EKF估计的累积输出:Z?

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       其中B,如第2节开头所定义的,是考虑运算符类型的所有运算符实例的集合,b∈B表示所有运算符实例的迭代,xb t表示时间的EKF估计x t为运算符实例b。

2.4 Bootstrapping

       首先,必须初始化EKF。特别是在Operator的生命周期开始时,必须选择一定的时间以使Operator稳定,我们建议一个简单的自举过程。在我们的工作中,我们区分冷启动和热启动。如果之前从未执行过Operator,因此其行为未知,则执行冷启动,并启动默认数量的实例。在我们当前的实现中,这个默认数字被设置为1,即,如果系统不知道Operator,则它的单个实例被旋转。如果系统之前已经使用过此Operator,并且已收集有关其行为的数据,则执行热启动,并使用上次运行中使用的Operator的平均实例数。这样做是为了在引导过程中使用尽可能接近可能需要的比例的值。

        在启动Operatro实例之后,我们开始两步参数引导。首先,实现死区时间,在此期间不进行缩放决定,并且仅采集和收集输入数据速率(u)和系统状态(z)的测量。在死区时间之后,使用以下参数初始化EKF。

Measurement Noise Covariance Matrix R:由于我们不能仅仅通过测量系统状态(z)来区分测量噪声和系统噪声,我们建议使用FakeLoad [43]进行校准测量,这是一个专用的负载发生器。 给定相对无噪声的负载生成,所有测量的方差代表测量噪声并构成我们的R.

Initial State Estimation x0:为了初始化状态估计,我们使用死区时间内系统状态(z)测量的简单加权平均值。 我们通过近期对系统状态测量进行加权,其中每个权重与测量后的时间(即其年龄)间接成比例:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

       其中n是z测量的数量,zi是第i个测量值,Δn是第n个三角形数字3。

Initial State Estimation Covariance Matrix P0:该参数确定预测的协方差,即,给出初始系统状态x0的估计置信度的测量值。 由于我们在死区时间内从z的测量值的加权平均值导出x0,我们使用相同的技术来导出P0:

一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

其中Δn-1表示贝塞尔对协方差的无偏估计的校正[40]。

System Noise Covariance Q:对于系统噪声协方差,我们使用与P0相同的值,但减少了先前确定的测量噪声:

Q = P0 -R(18)

       我们假设P0> R总是成立。 这背后的基本原理是,在死区时间观察的P0应该反映系统噪声(Q)和测量噪声(R)。 注意,虽然Q和R在我们的方法中是恒定的,但是随着时间的推移,由EKF调整Pt,因此关系Q = Pt-R仅适用于t = 0.之后,在EKF的操作过程中, 随着EKF收敛[27],P随着时间的推移而减少.

       在死区时间之后,我们定义了一个缓入时间,在此期间执行EKF,但其估计值尚未使用。 仅在引导过程的第二阶段之后,EKF估计用于缩放决策。 用于死区时间和易用时间的持续时间是可参数化的。 在我们的实验中,我们发现两个参数都足够10秒。

2.5 Parameter and Complexity Analysis

       在下文中,我们总结了滤波方法所需的参数,并讨论了它在时间和空间方面的计算复杂性。

       我们假设选择用于缩放的度量(包含在向量z中)是预先确定的。例如,在第3节的评估中,我们将使用CPU和内存利用率指标。此外,我们假设系统(u)的输入也是预先定义的。在我们的评估中,D和ΔD构成了这个输入。假设测量z以一定的精度执行,由具有协方差R的零均值高斯噪声定义。我们在2.4节中说明如何确定该参数,并在3.3节中对此进行评估。此外,输入转换函数f构成了我们方法的参数。在我们的评估中,我们使用线性函数x + a·D + b·ΔD,其中a和b是确定基于EKF的滤波器对输入数据速率的灵敏度的参数。最后,假设状态x本身受到具有协方差Q的零均值高斯系统噪声的影响。与R一样,Q构成一个参数,在2.4节中,我们展示了如何确定其值。最后,死区时间和易用性的持续时间(也在2.4节中描述)构成了与自举过程相关的参数。

       我们现在分析我们的过滤方法的计算复杂性。 在下文中,n表示系统状态向量x的元素的数量,并且m表示测量向量z中的元素的数量。 每次有新的测量时,都需要进行EKF迭代(预测 - 更新)。 我们使用2 Hz的测量频率来保持远低于旋转运算符实例所需的时间,并为EKF提供足够频繁的数据。 (10) - (12)中所示的预测步骤需要应用f(m×n运算),使用h(n×n运算)估计z,以及计算Pt(多个n× n操作)。 更新步骤,如(13) - (14)所示,包括计算卡尔曼增益Gt(一个1×n和多个n×n个运算),以及新系统状态x的估计,由两个1组成。 ×n和一个n×n运算。 总之,EKF计算时间为O(n2m)。

       在空间方面,EKF具有不保留历史的优点,因此EKF状态大小随着时间的推移而不变。 它由两个状态估计矢量x *和x(基数n),测量估计矢量z(carality m)和矩阵P和Gt(基数n×n)组成。 总的来说,EKF所需的空间为O(n2 + m)。

5. RELATEDWORK

       已经提出了许多使用机器学习来保持弹性的方法。例如,Ortiz等人。 [39]介绍PerfEnforce,使用在线学习为VM群集提供主动扩展决策。达斯等人。 [8]讨论了ElasTraS,允许云平台内的数据库系统执行多租户扩展操作。弹性系统的一个重要考虑因素是缩放开销,我们的目标是最小化。 Corradi等人研究了它对成本的影响。 [7](在云数据中心的背景下)和Mao等人。 [35](在云工作流程中自动缩放的背景下)。这两项研究的共同结果是,实际上,这种开销会产生重大影响,应该保持在最低限度。在其他文献中,重点放在由缩放本身引起的开销上,而不是由决策制定。解决优化问题所需的计算工作量可能会非常高[10,45],尤其是在使用混合整数线性规划(MILP)等技术时[34]。

       上述方法并不直接涉及DSP,而是通常涉及弹性系统。 然而,DSP系统表现出非常具体的要求,例如自调整,自稳定和自我修复[12]。 因此,在此研究的基础上,还考虑到DSP系统的具体要求,我们关注DSP系统中的缩放技术。 Mencagli等。 [37]使用基于模型的预测控制(MPC)技术来创建重新配置稳定性和幅度之间的权衡。 虽然上下文(DSP)是相同的,并且目标(减少重新配置开销)与我们的相似(缩放操作量的减少),但作者关注的是使用分布式和合作方法,而我们关注的是 使用多个数据源并降低噪音。

       Floratou等人。 [12]提出Dhalion,一种自我修复和自我调节的流处理系统扩展,在Twitter Heron之上实现。 在此框架中,Metrics标准用于检测系统运行状况下降的症状。 Dhalion使用诊断程序来确定这种下降的可能原因(诊断),并调用解析器来尝试使系统恢复健康。 通过检查所采取的行动是否确实解决了问题来实现自我监控,并且学习机制将不成功的解决方案列入黑名单。 手中的文章中提出的基于EKF的过滤可以与Dhalion结合使用。

       在文献[20,31,46]中反复考虑了用于缩放决策的输入数据速率的使用,正如使用基于阈值的系统来推导具体的缩放决策[6,21]。 然而,所有这些方法都受到第1节中描述的开销问题的困扰。一些研究专门用于解决由于易失性输入引起的开销问题。 一般建议是使用低通滤波器[7]。 线性滤波器的另一个例子可以在Gong等人的着作中找到。 [14],其中缩放决策基于快速傅立叶变换(FFT)和模式识别。 与手头的工作相比,Gong等人。 不包括外部(环境)指标,例如输入数据速率。 相反,仅使用滞后来执行度量的平滑。 因此,我们工作中提出的过滤可以用作Gong等人提出的缩放机制之前的阶段。

       在我们的工作中,我们使用时间序列分析,也用于其他方法的缩放。 例如,这是通过使用模式匹配[5]或使用小波分析[38]创建自动缩放算法来实现的。 通过使用ANN模型进行主动和预测分析[24,38]或强化学习[11],可以称赞这一点。 [13]中使用了预测和反应方法的组合。 预测元素用于长期时间尺度,而反应性配置处理细粒度的短期峰值。 但是,这些方法都不使用外部度量作为达到扩展决策的数据源。

       基于EKF的处理广泛用于其他领域的状态估计。 在自主计算的背景下,Barna等人。 [2]使用EKF估计服务时间,内存利用率和CPU使用率等指标。 Jain等人。 [26]使用EKF处理HTTP请求数的噪声数据流。 在企业计算系统的背景下,Kusic等人。 [32]使用EKF估算系统负载。 我们的方法建立在基于EKF的时间序列处理技术的基础上,并展示了其在DSP中的适用性。 据我们所知,除了我们自己的初步工作[3]之外,没有任何方法在DSP的背景下使用这些方法。

6. CONCLUSION AND FUTRUE WORK

       在这项工作中,我们提出了基于EKF的DSP系统缩放过滤,以减少SLA违规造成的扩展操作和成本。

       我们提出了一个模型,其中使用EKF过滤系统状态的时间序列测量,并提供EKF应用的详细信息。 我们创建了一个系统,能够利用外在测量(例如,输入数据速率)统一内在测量(例如,CPU和存内存利用率)。 由此产生的滤波器可以快速响应环境变化,同时最大限度地降低对过程和测量噪声的敏感度。 我们利用这些过滤值来达到缩放决策。

       我们使用真实数据集和工作负载来评估我们的工作以运行实验。 虽然VM时间增加了13.9%,但我们看到缩放事件减少了多达87.9%,处理时间减少了52.4%,SLA违规减少了多达15.2%。

       在我们的评估中,我们将CPU负载和内存利用率视为内在指标。 虽然这些流行的指标是有用的缩放指标,并且在我们的评估中证明是有效的,但某些应用程序可能主要需要高网络利用率或磁盘使用率。 在这种情况下,仅考虑CPU和内存利用率是不够的。 相关工作表明基于EKF的处理适用于各种领域中的其他类型的指标[2,26,32],因此表明在DSP的背景下的适用性。 当然,需要进一步的工作来通过额外的指标在DSP中凭经验证明基于EKF的滤波。

       值得研究的另一个方面是拓扑范围的应用。 目前,我们的方法一次考虑一个单独的运营商。 虽然它可以应用于DSP拓扑的所有运营商,但每个运营商都以非合作方式自行执行扩展决策。 在未来的工作中,我们将扩展我们的方法,以考虑系统范围的行为,如涟漪效应和背压。

       用于评估的图像处理工作量代表了一种广泛使用的流处理方案[47]。 虽然它的广泛使用使其成为初步评估的良好候选者,但还需要进行更广泛的评估,以确定其他用例中的具体挑战和可能的方法。 其他方案的主要挑战是更复杂的查询和其他工作负载特征,例如高I / O或网络负载。 我们将在4.3节讨论如何将我们的方法扩展到这些场景和查询。

上一篇:多测师肖老师__rf框架之定位方法(26.4)


下一篇:自制操作系统 ---- 资料