在云计算中,由于需求的庞大和多样性,平台计算资源的容量管理一直是一个极大的挑战。为了更好地根据整个云计算平台的容量进行规划,平台往往会提前收集一部分非即时的计算作业需求,这些计算作业可以持续运行指定长度的时间,且起止时间更加灵活。通过根据非即时计算作业的需求和平台在未来一段时间内的容量情况来进行统一调度,有助于平衡整个平台的工作负荷,提升平台资源的利用效率。但是,由于平台上未来可用的计算容量是不确定的,所以对这些非即时作业的调度,在不确定的计算资源约束下进行安排是一个巨大的挑战。
对于具有不确定约束的优化问题,传统的优化方法无法直接进行求解,而是需要结合对不确定约束进行预测的步骤来进行优化。然而,单独进行预测和优化的两阶段方法有明显的不足之处:两阶段方法假设预测结果是准确的,可是在实际中预测误差却无法避免,从而导致优化得出的解会违反(violate) 约束。
在本篇论文中,微软亚洲研究院的研究员们将这类问题建模成一个预测+优化(Prediction + Optimization)框架下的问题,并针对这类问题提出了不确定约束下的作业调度算法 CUC(Controlling under Uncertain Constraints),该算法的架构如图4所示。其架构大体上可以概括为以下三个方面:
1)在预测阶段预测未来容量的大小,同时对预测的不确定性进行建模; 2)用预测的未来容量的分布来指导作业调度的优化问题,得到相应的调度方案; 3)利用调度结果结合贝叶斯优化来进一步提升容量预测的表现。