背景
随着云计算技术的发展,越来越多的应用程序被部署在云环境中,云环境承载的应用过多会导致云数据中心的功耗波动剧烈,资源利用率不平衡。云环境中可以通过工作负载表征及预测、任务调度算法、弹性伸缩技术等方式来动态调整资源,从而提高资源利用率。
当前的一些研究
工作负载分析及建模:
在某些时间或某些位置应用程序的负载会突然发生不可预知的变化,提前了解工作负载的分布特征可以确保云环境中应用程序的可预测性和可控性,从而满足应用程序和服务的实时资源需求。
时间序列数据预测模型除了使用回归模型,包括平滑指数法和差分整合移动平均自回归模型ARIMA等,也有很多学者使用机器学习的方法构建模型,包括决策树、支持向量机、聚类方法等。近些年深度学习方法逐渐成为主流,包括RNN、CNN、LSTM、GRU等。
任务调度及整合:
为了确保工作负载以及资源利用率平衡,需要将应用组件配置到合适的VM/容器上,或者调整承载相应组件的VM/容器的大小,并将其迁移到适当的物理服务器。这会导致工作负载重定向,进而导致特定物理服务器上共同托管的应用程序组件的工作负载的整合。
部分任务调度算法考虑感知特征,包括能耗、成本和负载等进行优化,不过最常用的还是基于启发式智能算法实现的多目标优化,优化效果也较好,除此之外,很多学者考虑使用任务排序、任务分配以及节点预测等方法用于优化任务的调度过程。
弹性伸缩:
在负载不平衡的情况下,使用弹性收缩技术可以使得资源能够根据应用的需求动态地分配和释放,从而在保持给定QoS的同时减少由于过度供应而导致的资源成本。
弹性伸缩分为静态弹性伸缩和动态弹性伸缩。其中静态弹性伸缩方法利用当前负载信息去分配和释放资源,动态弹性伸缩方法利用当前负载信息去构建负载预测模型,从而得到下一阶段的负载预测值,根据该预测值动态地去分配和释放资源,如下图所示:
未来的研究趋势
工作负载分布及传播:通过构建工作负载传播模型,可以进一步了解分布式应用程序组件与组件之间的工作负载相关性。
数据生成及数据隐私:由于难以知道每个应用组件的负载情况,因此需要以一种安全的方式来生成其组件负载信息。
异常工作负载预测:在真实云环境中负载信息会突然出现波动,若处理不及时或不当会违反SLA。
服务器整合优化:将负载预测模型与服务器整合结合,以提前动态地调整所需的物理机数量。