【翻译】Database Workload Capacity Planning using Time Series Analysis and Machine Learning 基于时间序列分析和机器学习的数据库工作负载容量规划
摘要Abstract
当采购或管理任何I.T.系统或者系统组件的时候,了解由任何服务级别协议控制的关键业务功能运行所需的计算资源至关重要。预测未来消耗所需的资源就像研究众所周知的水晶球一样。在本文中,我们将研究目前使用的预测技术,并评估这些技术是否适用于技术堆栈的更深层次,例如构成数据库工作负载的集群数据库实例、应用程序和事务组。方法为利用监督的机器学习识别出工作负载所显示的特征,例如重复发生的模式、冲击和趋势,并在预测中体现这些特征。 实验评估表明,我们提出的方法降低了预测的复杂度,并且对于复杂的工作负载也生成了准确的预测。
1 介绍Introduction
企业积极地采用云技术,关键驱动力之一就是敏捷性。但是,组织机构经常低估基于按需付费订阅模式可能产生的成本。在使用云之前,具有本地架构的机构是由管理团队来提供环境。然而,这通常是缓慢且麻烦的,延长了开发生命周期,从而不利于业务。现在,云技术在满足了对速度和敏捷性的需求同时,却有可能为成本带来意想不到的后果。例如,组织内部可能缺少监管框架来监督云资源的获取。这种财务和监管的缺乏并不是造成成本激增的唯一原因。对于每个已调配的环境,其中的一部分资源可能永远不会被使用到,因此,调配正确规模(就CPU、内存和存储而言)的云资源至关重要。 正确调配后,云财务管理部门就可以交付可扩展的环境,从而提高业务敏捷性。
对于云服务提供商(CSPs),一个亟待解决的问题是短期、中期和长期资源分配的稳定性问题。 在不影响SLA的前提下,拥有足够的资源来满足消费者的需求是至关重要的。创建和维护基础架构的模式已从消费者(个人I.T.机构)转移到CSP,即IT机构变成了巨型机构,数据中心遍布全球,满足了网络延迟。这种责任转移虽然对消费者有吸引力,但对于CSP来说是一种收入成本,可以说CSP将这一成本补偿给了消费者。因此,容量规划突然成为了焦点。
目前有关云建模的大部分工作是在基础架构层面上,基于虚拟机(VM)的建模。工作负载会掩盖掉数据库级别实际发生的事情,因此这个层面的预测将一系列事情结合在一起。例如,正在使用的CPU总数会显示出来,但只有其中一部分会分配给数据库。从容量规划的角度来看,这意味着我们要考虑数据库未使用的CPU,因为它是在VM级别上使用的,而从监视角度来看,我们无法确定为数据库分配了多少CPU,以及数据库CPU的发展是否特别在增加。为DBaaS进行配置面临短期和长期挑战:
• 短期-预测何时将用尽资源:主动监视。
• 长期-容量规划,无论是本地,异地还是非云环境。
在本文中,我们介绍了适用于不同预测持续时间的技术,但实验着重于短期容量规划,通过及时分配必要的资源来最大限度地减少过度配置。
在为VM和DB进行建模和配置方面已经有了大量工作。我们对时间序列分析特别感兴趣,因为循环模式和趋势是DBaaS短期和长期决策的关键特征。 随时间推移来分析工作负荷时,所有的关键特征(例如峰、谷和趋势)都将显示出来。**在本文中,我们研究了时间序列分析技术在表示数据库工作负载方面的应用。**例如,OLTP和OLAP工作负载往往具有不同的占用空间并表现出不同的行为。具体来说,我们调查不同时间序列建模技术在不同季节性和增长水平下的适用性。
本文的贡献如下:
• 研究了时间序列建模技术(例如ARIMA和HES)在OLTP和OLAP工作负载的工作流预测中的应用。
• 有关在给定工作负载下使用的模型(例如ARIMA和HES)的自选择和自配置的建议。
• 在技术堆栈的数据库层(如Database Instances)上使用受控工作负载进行的经验评估。
• 演示了该方法在Oracle Advanced Customer Services托管的实际工作负载中的适用性。
2 相关工作Related Work
在本节中,我们将在工作负载建模和云计算中的预测的标题下讨论与本文有关的相关工作。
目前,对于如何做出能够回答“我需要多少资源?/我何时需要更多资源?”之类问题的预测尚无标准。 一些建议在技术堆栈的特定“层”(例如VM)上进行预测。一些人建议,在配置资源之前已知请求的资源大小时,应在“配置工作”中回答该问题。其他人则建议,当作为服务质量(QoS)协议的一部分而需要监视或某种形式的交互时,预测变得很重要。还有一些人认为,预测对于成本和优先级设计很重要。詹宁斯等人对资源需求描述进行了250余篇论文的详尽研究,并强调了用于描述此类需求的不同类型的模型和技术。他们指出,目前使用的技术对应用程序使用的资源与该应用程序的性能之间的关系进行建模,从而突出了两者之间的差距。
2.1 工作负载建模Workload Modelling
工作负载建模为包括需求预测在内的各种活动提供了基础。 卡夫等人在数据中心的背景下研究了特定的存储指标(例如IO),重点关注工作负载之间如何相互影响。这项工作是在综合环境的背景下完成的,但重点是堆栈的VM层。目前已经确定并从其他领域借鉴了一些技术。 例如,Gmach等人使用线性回归技术来识别趋势,并使用bin装箱算法将VM分组在一起。 Lorido-Botran等人研究了如何扩展在云环境中需要弹性化的工作负载。他们专注于IaaS级别的含义,但确实在预测算法中使用了时间序列分析。在自主计算中,Jiang等人使用时间序列建模技术根据消耗动态地在IaaS级别上调整功率,计划的人工和辅助设备,从而预测功率的使用情况并做出相应的调整。他们使用时间序列分析中的一系列技术,例如移动平均,自动回归,神经网络,支持向量机等,并将其应用于每小时,每天和每周的粒度,并且每天的粒度给出了良好的结果。
工作负载建模可用于通知短期适应或长期资源需求。 就短期行动而言,有几项建议侧重于服务质量,使用建模技术来识别有问题的工作负载。卡瓦略等人、洛里多-博特兰和塔尼亚、以及柴西里等人都研究了识别可能成为问题的虚拟机的方法,然后采取行动进行适应。同样,Sakr和Liu着眼于满足服务级别协议,并将规则应用在工作负载消耗的资源上。Gmach等人在供应阶段使用建模技术作为容量规划工作的一部分,目的是通过分析虚拟机创建的模式和趋势来创建及时的方法,以及将工作负载转移到争议较少的一组新虚拟机的加权算法。Krompass等人和Schaffner等人还通过将工作负载迁移到使用率较低的主机(虚拟机),研究了工作负载导致停机的影响。
就堆栈特定层的建模而言,如前所述,大多数工作都集中在虚拟机上。然而,由于会发生数据点的自然平滑,在这一层(虚拟机)建模掩盖了特定工作负载的真正用途。Duggan等人采用了一种新的方法,即使用并发查询性能预测(CQPP)来对PaaS(数据库)的实际工作负载进行建模。他们利用机器学习和线性回归技术来预测查询的性能。尚不清楚所使用的回归技术是否基于时间序列分析技术。
Calheiros等人使用ARIMA(自动回归综合移动平均)模型来预测虚拟机层的网络请求,其中虚拟机被表示为资源(中央处理器、内存和存储)的标准配置,并且对其预期性能作出了假设。如果预测的负载可能耗尽预期性能,则会创建一个新的虚拟机,从而解决扩展问题。Tran等人在分析虚拟机工作负载时,每小时进行一次时间序列分析。他们使用了季节性ARIMA,但仅在虚拟机级别使用,并没有考虑季节内的季节,而这些季节不可避免地会出现计算资源。目前工作中的启发式方法通常基于使用简单规则的贪婪算法。Carvalho等人通过观察准入控制,并假设资源的容量规划已经单独完成,提出了基于预测的云环境技术。他们采用基于配额的方法。预测是根据启发式方法创建的,并应用简单规则来确定工作负载是否表现为预测的,并使用诸如指数平滑(ETS)之类的技术来耗尽可用资源。
在本文中,我们使用时间序列分析技术来学习主流数据库工作负载的模型,包括趋势和季节性等模式。我们将这些技术应用于可以从数据库中获取的不同指标。在实验中,我们评估了短期预测(天数级)的方法,但我们也有一些将其用于长期配置的经验。通过这样做,我们提供了迄今为止最全面的基于时间序列的数据库工作负载建模技术评估。通过充分理解“数据”及其结构,技术堆栈的哪一层或练习的哪一部分都无关紧要;我们应该能够根据没有复杂特征的时间序列数据做出预测。
2.2 云计算中的预测Prediction in Clouds
在云计算中执行工作负载预测是一个相对较新的想法,但无论是供应资源的CSP还是消耗资源的用户,从关系的双方来看都很重要。这里的论点是云的弹性和即付即用性质。Jennings等人指出虚拟机放置是一个问题,但主要集中在向量bin打包上&#