【每周论文】Heracles: Improving Resource Efficiency at Scale(ISCA 2015)

这篇文章发表在ISCA 2015,其中一作 DAVID LO 2015年毕业于斯坦福大学,是Christos Kozyrakis的学生,毕业之后去了Google的Platforms team,这个工作就是他在Google实习期间做出来的工作。


各大公司为了提高自己数据中心的资源利用率,常常将延迟敏感型应用(latency-critical,LC)和其他应用(best-effort,BE)混合运行来提高资源利用率,但是这种方法最大的挑战是,这些应用混合运行之后对于系统的共享资源(如cache、memeory、I/O channels和network links)产生竞争进而对LC应用产生了干扰,对于LC应用来说,在尾延迟(tail latency)方面有非常严格的SLOs(service level objectives),甚至只有一点点的干扰都有可能违反SLO,这样常常导致LC应用的服务质量下降(用户的体验变差)。

作者的目标是消除LC作业的SLO违规,同时最大化BE任务的吞吐量。

为了实现这个目标呢,作者面临了三个挑战:

  • 我们必须认真分配每个资源。保守的分配将降低BE任务的吞吐量,而乐观的分配将导致违反LC任务的SLO。
  • 这两种任务的性能取决于多种资源,这将导致很广的资源分配空间,这就需要随着负载实时变化的同时去探索这些资源分配的空间。
  • 在现在的服务器中,孤立和非孤立资源之间存在并不明显的相互作用。例如,为了避免热数据的驱逐而增加LC任务的cache,这可能会导致BE任务的未命中增加而产生内存带宽方面的干扰。

本文作者提出了Heracles,它通过软件和硬件方面的机制,使不同的任务能够在一台物理机上运行。它能够在保证LC服务性能稳定的情况下,最大限度的将空闲资源给BE作业来使用,并且它使用了实时监控和离线分析来检测干扰源,通过隔离机制来预防干扰的产生。

Heracles会实时监控LC应用的latency,当LC的latency比较小时,可以运行更多的BE;当LC的latency比较大时,则会限制BE来避免干扰。下图是Heracles的整体架构,它会在每一个服务器上都会部署一个服务,来管理本地的LC服务和BE服务。Heracles的主要思想是将LC和BE任务相互干扰的问题当做一个优化的问题,通过分离干扰源来降低优化的复杂度,并将高纬度的问题分解为很多个小的和相互独立的低纬度的小问题。如下图所示,一个大的控制器下面还有三个子控制器,这三个子控制器通过绿色的控制器来协同工作。

这里写图片描述


该工作使用了4种隔离机制来减少干扰的产生,分别是core isolation、LLC isolation、DRAM isolation、power isolation、network traffic isolation

那该工作的缺点就是,它只能保证一台服务器上的一个LC应用,如有其它的LC应用就被当做BE应用来对待了。并且在所有的应用中LC应用的优先级是最高最高的,当LC应用性能出现波动时,马上牺牲BE应用来空出来一部分资源给LC使用,当然当LC应用性能非常好很稳定时,会把一些松弛的资源来最大限度的运行BE应用。

同时也看到了一个在H基础上更进一步发展的工作,它能够保障同一台服务器上的多个LC应用和BE应用同时运行,并且效果还非常好。

扫描二维码关注公众号,回复: 1727350 查看本文章

是该进一步思考我们下一步工作该怎么做了。

在搜集关于该文章的资料时,看到一篇翻译这篇文章的,作者更多的是使用自己的理解来写的,安利一波Heracles: Improving Resource Efficiency at Scale

猜你喜欢

转载自blog.csdn.net/violet_echo_0908/article/details/77823272