论文标题:A Self-Optimized Generic Workload Prediction Framework for Cloud Computing
概述
准确地预测未来的工作负载,如作业到达率和用户请求率,对于云计算中的资源管理和弹性非常关键。然而,设计一个通用的工作负载预测器,并使其适用于各种类型的工作负载,具有很大的挑战性,因为工作负载的种类繁多且随着时间动态变化。由于这些挑战,现有的工作负载预测器通常是手动调优的,以便在最大程度上提高精度,针对特定(类型的)工作负载。这种需要个体调整预测器的必要性,也使得从先前研究中复现结果变得非常困难,因为预测器的设计与工作负载之间存在强烈的依赖关系。
在本论文中,我们提出了一种新颖的通用工作负载预测框架LoadDynamics,它可以为任何工作负载提供高精度的预测。 LoadDynamics采用了Long-Short-Term-Memory模型,并可以自动优化其内部参数,以实现高精度的个体工作负载预测。我们使用表示公共云应用程序、科学应用程序、数据中心作业和Web应用程序的混合工作负载跟踪来评估LoadDynamics。评估结果显示,LoadDynamics的平均预测误差仅为18%,至少比最先进的工作负载预测技术低6.7%。在每种工作负载中,LoadDynamics的误差也仅比通过穷举搜索找到的最佳预测器高1%。当应用于Google Cloud时,启用了LoadDynamics的自动缩放策略通过将作业周转时间至少减少24.6%和将虚拟机过度配置至少减少4.8%而优于先进的预测器。
关键词-云计算; 工作负载预测; 长短期记忆; 自我优化框架; 资源管理;
I. 引言
准确预测未来的工作负载,例如在下一个时间间隔内到达的作业或用户请求的数量,长期以来一直被认为是有效弹性伸缩(它使得云基础设施能够根据负载的变化自动调整资源)的主要要求[1] - [3]。通过准确的工作负载预测,用户或云服务提供商可以设计更好的自动缩放策略或虚拟机调度管理器,提前适当地配置虚拟机(VM)或容器,以避免资源过度或不足配置,以及资源冷启动[4],[5]所带来的负面性能影响,这可能导致服务级别协议(SLA)违规或过高的云使用成本。
然而,由于工作负载模式(例如周期性、突发性或增长)在不同作业类型之间存在大量变化[6],因此准确的工作负载预测是一个具有挑战性的问题。图1显示了来自Google数据中心[7],Facebook数据中心[8]和维基百科[9]的作业工作负载跟踪。如图1所示,不同云应用程序之间的工作负载模式差异很大。例如,维基百科的工作负载表明存在强烈的季节性,而其他工作负载则没有明显的周期性。此外,工作负载内的模式也可能随时间而变化,如Google工作负载前半部分的高峰和Facebook工作负载的高波动所示。工作负载模式的多样性要求工作负载预测器针对每个工作负载进行调整和优化,以确保高准确性。工作负载内的变更要求预测器足够复杂,能够识别并准确预测一个工作负载内的各种模式。
通常,没有统计、时间序列和机器学习方面专业知识的普通云用户很可能难以为自己的工作负载设计出如此复杂的预测器[10]。理想情况下,应该提供一种通用的工作负载预测框架(例如由云服务提供商提供),可以为各种动态工作负载生成准确的预测器,以帮助普通云用户最大程度地利用自动缩放的好处。
之前的研究中的工作负载预测器通常是针对特定工作负载或特定类型的工作负载开发的[11] - [16]。这些预测器没有被设计成通用的,通常在应用于其他工作负载时预测精度较低。此外,需要针对每个(类型的)工作负载手动调整预测器的必要性,还使得很难复现以前研究所呈现的预测结果。我们之前也探索了通用的工作负载预测框架[3],但是这个先前的框架的准确性仍有提高的空间。
在这篇论文中,我们提出了一个名为LoadDynamics的通用工作负载预测框架,可以为各种动态工作负载生成高精度的工作负载预测器。LoadDynamics采用了机器学习模型——长短期记忆(LSTM)[17]来进行预测。然而,机器学习模型无法自动为任何工作负载生成准确的预测器,除非进行适当的超参数调整,例如调整模型的层数。为了解决这个问题并提高对个体工作负载的预测准确性,LoadDynamics还通过使用贝叶斯优化来自动优化为每个工作负载训练的模型的超参数。通过这种自我优化,LoadDynamics能够生成针对个体工作负载进行优化的高精度预测器。此外,与普通的前馈神经网络和许多其他机器学习技术不同,LSTM模型能够追踪数据中相对较长的依赖关系,使其有可能在仔细选择超参数的情况下检测和预测工作负载中的各种模式[18],[19]。
我们将LoadDynamics应用于云中四种不同类型的工作负载的14种工作负载配置。使用LoadDynamics的工作负载的平均预测误差为18%,表明LoadDynamics可以为具有动态变化的各种类型的工作负载提供高精度的预测。与三种最先进的工作负载预测器相比,LoadDynamics的预测误差分别减小了6.7%,14.1%和14.5%。为了证明LoadDynamics的更高准确性确实可以改善自动扩展,我们还在Google Cloud上使用LoadDynamics实现了一种预测性自动扩展策略。实验结果显示,与两种最先进的预测器相比,使用LoadDynamics的自动扩展将云应用程序的平均完成时间减少了24.6%和38.1%。LoadDynamics还可以通过减少虚拟机过度配置来提高云资源效率,减少了4.8%和17.2%。
本文的贡献包括:
- 1)设计了LoadDynamics,一个工作负载预测框架,能够自动优化其预测器以为个体工作负载提供高准确性的预测,相对于最先进的工作负载预测技术,LoadDynamics提供了显著更高的准确性。
- 2)对14种具有不同模式和应用类型的工作负载配置进行全面评估,以证明LoadDynamics确实可以为具有动态变化的各种工作负载提供高精度的预测。
- 3)通过案例研究证明了LoadDynamics的高精度预测可以进一步提高实际公共云上自动扩展的效果。
本文的其余部分组织如下:第二节正式定义了工作负载预测问题;第三节详细介绍了LoadDynamics的设计,包括其LSTM模型、超参数优化和工作流程;第四节给出了LoadDynamics的实验评估;第五节讨论了限制和未来工作;第六节讨论了相关工作;第七节总结了本文。
II. 问题定义与动机
A. 问题定义
对于典型的执行机器学习训练/推断作业、高性能计算应用程序和提供网络请求的云系统,一系列作业或请求在不同时刻到达。这些作业或请求可以被划分为时间间隔,并用每个时间间隔中到达的作业或请求数量来描述。例如,图1a中显示的Google工作负载被划分为30分钟的时间间隔。在第一个30分钟的时间间隔内,有814k个作业。在第二和第三个时间间隔内,分别有757k和791k个作业。图1b中的Wikipedia工作负载也被划分为30分钟的时间间隔,前三个时间间隔分别有5.4、5.2和4.9百万个用户请求。
假设在某个时间间隔,用户希望提前为下一个时间间隔到达的作业/请求分配虚拟机(VM