【每周论文】Bubble-Up: Increasing Utilization in Modern Warehouse[MICRO 2011]
这篇文章来自于MICRO 2011,作者是Jason Mars,传送门来~~
随着云计算的发展,越来越多的计算任务移到了云上来进行,运营商常常通过过度分配(overprovisioning)资源的方式来保证延迟敏感型应用的性能,因为没有办法精确预测应用因资源的竞争而产生性能的下降,为了避免干扰也就没有办法将这些高优先级、延迟敏感型应用和其他的作业混合部署起来,就产生了资源的空闲,这样就是导致了数据中心资源利用率低的一个主要因素。这种资源的过度分配其实是没有必要的,如下图所示,应用的混合部署并不确定能导致严重的性能干扰。因为无法精确的预测因为混合部署产生的干扰就只能单纯采取不混部的方案,此外,在没有预测的情况下如果要预先分析所有混部可能产生的干扰这种开销是非常大的(混部的方案实在太多了),因此这种精确的预测一直是一个有待解决的问题。
本文提出Bubble-Up,是一种表示特征的方法,可以准确的预测因为共享内存(memory)资源产生竞争而导致的性能下降,并使用这种方法在Google数据中心的生产环境中实现作业的混部,实验表明在500台服务器的集群中,可以将资源利用率从50%提升到90%,并且保证延迟敏感型应用的服务质量。
Bubble-Up将预测性能干扰问题分解成了两个子问题(这里潜在的假设是,压力和敏感程度可以使用共同的压力指标来度量的):
- 测量应用程序在内存系统上产生的压力
- 测量应用程序在不同的压力下的影响程度
在这两个子问题下,通过两步来进行应用的特征描述。第一步先测试应用程序在不同的压力下的QoS并形成一个敏感度曲线,如下图所示,Bubble是一个针对内存系统的压力测试程序,通过提供不同程度的压力来对应用进行一个特征的刻画。第二步对应用程序进行打分。经过这两步之后,对于每个应用程序都会有一个敏感度曲线和压力分数,那么在给定两个应用后就可以预测它们混部之后的性能,如下图所示,在应用程序B的压力分数为2时,我们观察应用A的曲线图,其预测的QoS为90%