数据中心架构和编程

数据中心架构和编程

-----商品化计算时代的并行

原文

如果将数据中心看做是一台计算机的话,那么如何设计、编程和操作这个类似于“航空母舰”一样庞大的计算平台将成为颇有挑战的事情。一方面,我们需要它有超级计算机那样的能力:即通过包含数十万个计算节点来满足吞吐量需求、延迟需求以及每个任务的QoS,同时还要提供可靠性和可用性的保证。另一方面,数据中心还要支持效用计算(utility computing),所以数据中心的造价要相对低,同时每个计算任务能耗要做到尽量低。

计算任务的能耗最低包含两层含义:

  • 数据中心是异构系统。因为在满足任务的QoS和延迟需求的前提下,任务应该在耗能最低的部件上执行,这样才能有效降低数据中心的耗能。
  • 数据局部性的重要性。从宏观的角度看,任务的执行往往是对数据的处理,数据处理的过程称为计算。在数据中心中移动数据的代价远高于迁移计算本身,所以应该将计算任务在离数据最近的地方执行,才能让任务尽快结束。数据局部性的优化是全方位多层次的,包括系统层(跨机架),板级甚至是芯片级。

在这样复杂的环境中开发软件涉及两方面的问题:

  • 什么样的软件基础设施架构能够保证在这个对数据局部性敏感的异构系统上轻松开发上层应用?
  • 什么样的硬件架构能够简化软件开发过程和运行时管理?

为了降低应用开发的复杂性并保证应用能够适应数据中心硬件的规模和不同年代的硬件,编程模型必须要向用户隐蔽这种异构性。开发者在开发应用时应使用高层次的编程接口、库或者是特定领域的编程语言,例如OpenGL,TBB,MapReduce等。这种高层次的工具负责将计算任务和数据关联起来,而由一个多层次的运行时管理系统将这些任务映射到数据中心的资源池中,映射的原则当然是最大程度的降低能耗。运行时管理系统包含的任务有:

  • 在恰当的时候将计算任务移动到数据的存储位置(反之亦然)。
  • 基于任务的特性、延迟需求和当前系统负载为新的计算任务选择适当类型的处理器
  • 在数据中心的层次上通过数据拷贝来保证可用性
  •  ....

上述提到的功能都或多或少的出现在现有的一些分布式框架中,如MapReduce框架,BigTable,DryadLinq。接下来面临的研究挑战包括:

  • 挖掘节点内的并行性
  • 处理资源的异构性
  • 在不同层次优化数据的局部性
  • 降低不同层次的软件协议带来的膨胀问题,这个问题将影响系统的性能和能耗效率

系统架构方面面临的最大的挑战则是如何构建最简单代价最低却能充分利用硬件异构性和数据局部性带来的最大好处。这涉及到从一个长长的资源池候选表(不同架构的CPU,GPU,DSP,嵌入式处理器如ARM,FPGA等)中选择数量和比例合适的异构部件。其困难性在于平衡搜索更好方案以达到更优的能耗利用率和因此而引入系统管理软件的复杂性。

我们需要重新审视异构硬件资源的正确的集成方法,尽管片级集成有诸多优势,但是板级集成或者机架级的集成有更大的实用性。这是因为后者可以直接重用为巨大的笔记本市场和手机市场设计和实现的芯片。我们还需要重新考虑通信机制和内存访问机制,还要提供通用的和可编程的性能监控工具来辅助软件管理。

总的来说,数据中心为我们提供了一个让人激动的计算平台。在这个平台上,协同开发的软件和硬件将对技术和社会产生深远影响。我们面临的巨大挑战将促进那些涉及软硬件创新的系统原型。为了理解工作负载的特性和相关度量数据,数据中心的相关研究需要学术界和工业界联合起来一起努力。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值