摘要
诸如深度学习和对延迟敏感的在线Web服务之类的长期应用程序(LLA)的普及,为共享生产环境中的集群调度程序带来了新的挑战。对LLA进行调度需要支持复杂的放置约束(例如,在不同的计算机上运行一个应用程序的多个容器)和更大的并行度以提供全局优化。但是现有的调度程序通常会遇到严重的约束违规,高延迟和低资源利用率的问题。
本文提出Aladdin,它是一种新颖的集群调度程序,它可以在避免约束冲突的同时最大程度地提高资源效率: 1. 提出了多维非线性容量函数( multidimensional and nonlinear capacity function)来支持约束表达式; 2. 应用优化的最大流量算法(optimized maximum flow algorithm)来提高资源效率。
对来自10,000台计算机集群的阿里巴巴工作负载跟踪进行的实验表明,阿拉丁可以将违反的约束减少多达20%。同时,与最新的调度程序相比,它可以将资源效率提高50%。
一、引言
包括深度学习,流和对延迟敏感的在线Web应用在内的长期应用程序(LLA)越来越多地在基于容器的生产集群上运行。 每个LLA包含一个或多个使用寿命长的容器,用于封装硬件资源(例如,CPU和内存),这些容器的分配和使用时间从几小时到几个月不等。 在这种情况下,集群调度程序面临更复杂的放置约束和更大程度的并行性。先前的工作主要集中在短寿命的应用程序(例如MapReduce批处理作业,内存Spark查询)中,以确保低延迟。但是,这些方法可能会产生严重的约束违反和LLA的高延迟。
在阿里巴巴跟踪中,LLA约束主要包括反亲和力和优先级。 我们发现,近70%的LLA具有抗亲和性约束,这意味着出于性能或可靠性要求,应用程序内或应用程序之间的容器应在不同的机器上运行。 此外,大约有15%的容器应满足优先级约束,如果存在放置冲突,则优先级高的容器可以优先处理优先级低的容器。 最近,提出了两项新颖的研究来解决复杂的放置约束的挑战。 如图1所示,Firmament可以通过具有超时机制的基于多轮流的调度来支持LLA。但是,它可能会遇到连续的冲突并导致调度质量低下,这表明集群