6.1 引言
谁都能造出一个快 CPU,诀窍在于造出一个快系统。
——Seymour Cray,被誉为超级计算机之父
仓库级计算机(warehouse-scale computer,WSC)是数十亿人每天使用的互联网服务的基础:搜索、社交网络、在线地图、视频流、网上购物、在线游戏、软件即服务,等等。智能手机成为随处可用、始终在线的瘦客户端设备,使我们必须建立可扩展、可靠且具有成本效益的 WSC,作为这些极受欢迎的互联网服务的后端平台。这也催生了云计算:以公共服务的方式提供计算硬件、软件,乃至数据,任何持有信用卡的人都可以使用。
WSC 看起来或许只是大型集群,但我们将看到,其体系结构和运作方式大有不同。要以合理成本和良好性能达到每座 WSC 超过 50,000 台服务器的规模,就必须协同设计它的各个方面,包括硬件、软件、网络,甚至容纳 WSC 的建筑物中的配电与冷却基础设施。在这个前沿领域,WSC 是超级计算机的现代继承者,Seymour Cray 因而也成了今天 WSC 体系结构设计者的先驱。Cray 的超级计算机同样采用纵向协同设计,支持科学家与工程师在其他地方无法完成的高性能计算(HPC)。不过,Cray 的计算机价格极高,只有少数公司负担得起。今天的 WSC 如同一台巨大的机器,造价达数亿美元,却能以令人惊讶的成本效益,为广泛用户支持多种计算。因此,可以说,WSC 在当今社会所起的作用,比过去 Cray 超级计算机的作用更为重要。
WSC 设计者与服务器设计者有许多共同目标和要求:
性价比。 每美元能够完成多少工作至关重要,部分原因在于规模:将一组 WSC 的成本降低几个百分点,就可能节省数千万美元。
能效。 除了离开 WSC 的光子之外,它们基本上是封闭系统,几乎所有消耗的能量最终都变成必须排出的热量。因此,峰值功率和实际功耗决定了配电与冷却系统的成本,也决定了一座 WSC 能够容纳的硬件数量,进而决定其峰值性能和用户容量。建设 WSC 的大部分基础设施成本都花在供电与冷却上。此外,能效也是履行环境责任的重要部分。
通过冗余实现可信赖性。 互联网服务长期运行且全天候使用,这意味着 WSC 中的硬件与软件必须共同提供至少 99.99% 的可用性,也就是“四个九”;每年的服务中断时间必须少于 1 小时。冗余是 WSC 和服务器实现可信赖性的关键。服务器设计者常常增加硬件并承担更高成本,以达到高可用性;WSC 设计者则依靠大量具有成本效益的服务器,通过网络连接,由软件管理冗余。除了 WSC 内部的局部冗余,组织还需要多座互为冗余的 WSC,以掩盖可能导致整座 WSC 失效的事件。事实上,虽然每项云服务都需要至少 99.99% 的可用性,但 Amazon、Google、Microsoft 这样的互联网公司,整体的可信赖性还必须更高。如果其中一家公司每年完全离线 1 小时,也就是整体可用性只有 99.99%,就会成为头版新闻。多座 WSC 还有一个好处:降低广泛部署的服务的访问延迟。
网络 I/O。 服务器设计者必须提供良好的外部网络连接,WSC 设计者也一样。后者还面临另一项挑战:提供高带宽、且往往经过定制的内部网络,用来在一座 WSC 内实现分布式可靠服务,并保持多座 WSC 之间的数据一致性。
当然,也有一些 WSC 特性不同于服务器体系结构:
- 种类繁多的工作负载。 通过云计算,WSC 承载各种类型和规模的工作负载。其中有些是单节点数据库、科学计算等传统服务器应用;但 WSC 也承载规模最大的分布式工作负载,包括社交网络与搜索这样的交互式服务、视频流平台,以及计算这些服务所需元数据的大规模并行批处理程序。机器学习(ML)计算在 WSC 计算周期中所占的比例持续提高,既包括在线服务的推理负载,也包括批处理的训练负载。
- 充足的并行性。 服务器设计者会担心:目标市场中的应用是否有足够并发性,值得配置这么多并行硬件?为利用这种并行性所需的通信硬件是否过于昂贵?WSC 设计者没有这样的顾虑。首先,随着更多用户和工作负载迁移到云平台,进程级并行性十分充足。其次,批处理应用通常需要对大量不同数据集进行独立处理,因此能够利用数据级并行性。这与第 4 章介绍的数据级并行性相似,但这次针对的是存储设备上的海量数据集,而不是内存中较小的数据集,因此可以用多台机器以分布式方式加以利用。最后,交互式互联网服务面向成千上万乃至数百万彼此独立的用户。不同用户的读写很少相互依赖,因此交互式服务可以利用请求级并行性:大量独立请求并行推进,几乎不需要通信或同步。
- 运行成本不可忽视。 服务器设计者通常忽略服务器的运行成本,认为它与购买成本相比微不足道。WSC 规模巨大,寿命也更长,建筑物以及电气与冷却基础设施通常按 10–20 年摊销。因此,运行成本很快就会累积起来:在 10 年期间,能耗、配电和冷却可能占 WSC 成本的 30% 以上。
- 选址很重要。 建设 WSC 的第一步是建一座仓库。问题在于建在哪里。房地产经纪人强调地段,但 WSC 的选址意味着:能获得低价电力,有水或温度适宜的空气用于冷却,靠近互联网骨干光纤,附近有人能够到 WSC 工作,而且地震、洪水、飓风等自然灾害风险较低。更直接的考虑是土地成本,以及是否有足够空间供 WSC 扩建。对于拥有许多 WSC 的公司,还要考虑在地理上靠近现有或未来互联网用户群,以降低访问互联网服务的延迟。其他因素包括税收、不动产成本、社会因素(人们有时希望设施设在本国)、数据主权(某些司法辖区要求数据本地托管)、网络的成本与可靠性、电力的成本与来源(例如水电还是煤电)、天气(越凉爽越便宜),以及整体互联网连通性。
- 在各种利用率下都高效计算。 服务器设计者通常在成本预算内追求峰值性能,关心功率主要是为了不超过机箱的散热能力。6.7 节将说明,由于多种原因,WSC 服务器很少满负载运行。高利用率很难实现,因为它可能增加外部用户感受到的延迟,或加剧共享 WSC 计算、存储和网络组件的工作负载之间的干扰。既然运行成本不可忽略,WSC 服务器就必须在低、中、高各种利用率下都高效计算。
- 规模,以及规模带来的机遇和问题。 极端规模的计算机往往极其昂贵,因为它们需要定制硬件,而数量又少,定制成本难以有效摊销。不过,一次购买数千台服务器,就能获得可观的批量折扣。WSC 的内部规模如此之大,即使 WSC 本身数量不多,也能产生规模经济。这种规模经济催生了商业云计算:WSC 较低的单位成本,使公司能够以低于外部用户自行部署的成本出租服务器,同时仍然获利。100,000 台服务器的另一面则是失效。图 6.1 列出了一个只有 2400 台服务器的小型集群发生的中断与异常。即使一台服务器的平均失效前时间(MTTF)长达惊人的 25 年(200,000 小时),WSC 设计者也需要按每天五台服务器失效来设计。图 6.1 给出的硬盘年失效率为 2%–10%。
译注: 如果按同段的 100,000 台、独立且均匀失效的口径估算,每天预期失效数为 ,与原文的五台不同;原文未说明这里是否另用了较小的服务器规模。
| 第一年大致发生次数 | 原因 | 后果 |
|---|---|---|
| 1 或 2 | 公共电网故障 | 整座 WSC 失去市电;若 UPS 与发电机工作正常,WSC 不会停机。发电机约有 99% 的时间能够正常工作 |
| 4 | 集群升级 | 为升级基础设施而计划停机,常见原因是不断变化的网络需求,例如重新布线、升级交换机固件等。每发生一次非计划停机,约有九次计划内的集群停机 |
| 以下五类合计数千次 | 硬盘失效 | 硬盘年失效率为 2%–10%(Pinheiro 等,2007) |
| 同上 | 磁盘变慢 | 仍能运行,但速度降至正常的 1/10–1/20 |
| 同上 | 内存故障 | 每年发生一次不可纠正的 DRAM 错误(Schroeder 等,2009) |
| 同上 | 机器配置错误 | 配置问题导致约 30% 的服务中断(Barroso 与 Hölzle,2009) |
| 同上 | 不稳定的机器 | 1% 的服务器每周重启不止一次(Barroso 与 Hölzle,2009) |
| 5000 | 单台服务器崩溃 | 机器重启通常耗时约 5 分钟,原因可能是软件或硬件问题 |
假设每台服务器有两块硬盘,年失效率为 4%,那么对于 100,000 台服务器,WSC 设计者应预期平均每小时就有一块硬盘失效。不过,如图 6.1 所示,软件失效远多于硬件失效。因此,系统设计必须能够承受软件缺陷导致的服务器崩溃,这甚至比磁盘失效还频繁。在拥有数万台服务器的大型设施中,WSC 运维人员会非常熟练地更换硬盘,所以磁盘失效对 WSC 造成的成本远低于小型数据中心。DRAM 也是如此。如果能买到价格更低、可靠性再差一些的组件,WSC 甚至可能合理地使用它们。
例题
计算运行在图 6.1 所示 2400 台服务器上的一个服务的可用性。与真实 WSC 中的服务不同,本例的服务不能容忍硬件或软件失效。假设重启软件需要 5 分钟,修复硬件需要 1 小时。
解答
可以计算各类组件失效导致的停机时间,来估计服务可用性。保守地取图 6.1 每一类的最低次数,并把其中 1000 次停机平均分给四类组件。我们忽略速度变慢的磁盘——它们是这 1000 次停机中的第五类——因为它们损害性能,却不影响可用性。也忽略公共电网故障,因为不间断电源(UPS)系统掩盖了其中 99% 的故障。
一年有 小时,因此可用性为:
如果不使用软件冗余来掩盖这些大量中断,这 2400 台服务器上的服务平均每周就会停机一天,一个“九”也达不到,远低于 WSC 追求的 99.99% 可用性。
计算机集群是 WSC 的前身。集群由独立计算机构成,用局域网(LAN)和交换机连接。20 世纪 90 年代末,集群先在科学计算中流行起来,随后进入互联网服务领域,因为对于不需要密集通信的工作负载,它们比共享内存多处理器更具成本效益。共享内存多处理器则是第 5 章介绍的多核计算机的前身。因此,一种看法是,WSC 不过是由数百台服务器组成的集群,顺理成章地演进为数万台服务器。
不过,传统集群的运营者一般从组织的多个部门收集机器和第三方软件,集中运行。他们主要关注把众多服务整合到较少机器上,并将服务相互隔离,以保护敏感信息。因此,为了服务组织内部不同客户,容纳这些集群的设施往往具有很强的硬件和软件异构性。WSC 设计者则会定制第三方软件,或开发自己的软件,硬件也同质得多。总体而言,WSC 的目标是让仓库中的软硬件像一台计算机那样工作,通常运行多种应用。传统集群的最大成本往往是维护人员;设计良好的 WSC 中,服务器硬件是最大成本,人员成本则从最高项降到最低项。集群通常也没有 WSC 的规模,因此无法获得前面所说的规模经济。
WSC 在规模和成本上也类似高性能计算系统:有些 HPC 系统拥有一百万个处理器,造价数亿美元。HPC 系统历来采用同质体系结构,其处理器更强,节点间网络延迟也远低于 WSC,因为 HPC 应用的相互依赖更强,通信更频繁。HPC 系统针对少数长期运行的任务进行优化,让服务器保持满负载,甚至一次持续数周。WSC 则旨在支持各种工作负载,包括许多负载变化的交互式服务。WSC 的服务器利用率在 10%–80% 之间,每天都会随时间变化。WSC 的硬件异构性更高,因为它们逐步填充硬件,并引入多代设备,以更好地服务不同工作负载。分布式存储是 WSC 体系结构的重要组成部分,因为 WSC 工作负载比科学计算更加密集地使用存储与 I/O。HPC 系统常用的检查点和恢复等容错技术,对许多 WSC 工作负载并不实用。不过,近来 WSC 引入机器学习领域专用加速器(DSA),以及支持在数百到数千个加速器之间执行长时间训练任务的网络,使 WSC 与 HPC 体系结构日益接近。较新 WSC 的很大一部分,就是为容纳机器学习超级计算机而设计的。