跳转到主要内容

6.9 谬误与陷阱

WSC 虽然只有 25 年历史,Google 等公司的 WSC 体系结构设计者已经发现许多谬误与陷阱,而且往往付出了代价才获得这些认识。正如引言所说,WSC 体系结构设计者就是今天的 Seymour Cray。

谬误:云计算提供商在亏钱

AWS 刚宣布时,关于云计算的一个常见疑问是:按当时那样低的价格,能否盈利?AWS 后来发展得如此庞大,必须在 Amazon 季度财报中单独列报。令一些人意外的是,AWS 已被证明是公司最赚钱的部分。2021 年,AWS 营收为 620 亿美元,营业利润为 185 亿美元;Amazon 其他全部业务营收为 4070 亿美元,营业利润却只有 65 亿美元。2016 年,AWS 营收为 122 亿美元,营业利润率为 25%,而 Amazon 零售业务的营业利润率低于 3%。AWS 一直贡献着 Amazon 约四分之三的利润。

陷阱:关注平均性能,而不是第 99 百分位性能

正如 Dean 和 Barroso(2013)指出的,WSC 服务开发者更关心分布尾部,而不是均值。如果某些客户获得的性能很差,这种体验可能把他们赶到竞争对手那里,而且再也不会回来。

陷阱:为了提高 WSC 性价比,采用性能过弱的处理器

Amdahl 定律仍然适用于 WSC。每个请求总有一些串行工作;如果它们在慢服务器上执行,请求延迟就可能增加(Hölzle,2010;Lim 等,2008)。如果串行工作使延迟增加,使用弱处理器的成本就必须包括优化代码、使延迟恢复到较低水平所需的软件开发成本。大量慢服务器带来的更多线程,也可能更难调度和均衡负载;线程性能的波动因此会导致更长的延迟。当必须等待最慢任务时,一次糟糕调度出现的概率即使只有千分之一,对 10 个任务可能无关紧要,对 1000 个任务却会成为问题。

十年前,有人预计定制 CPU 会采用比最新乱序核心更简单、但数量更多的核心。这个预期没有实现。云提供商继续部署配备最新乱序核心的最新 x86 芯片。一些提供商使用乱序 Arm 核心构建定制 CPU,在单线程性能上与 x86 乱序核心竞争,AWS Graviton CPU 就是一例。对于迁移到云上的单机负载,乱序核心是显而易见的选择。即使分布式负载拥有充足的请求级并行性,乱序核心也能让开发者无需花费大量精力优化代码,就获得良好的吞吐量和延迟。尽管存在效率问题,改进速度也不快,乱序核心对 WSC 系统仍然十分重要。有趣的是,高端乱序核心如今又普遍出现在智能手机中,与简单核心组成 big-little 配置。

大量较小服务器还可能导致利用率降低,因为需要调度的对象越少,显然越容易安排。最后,即便某些并行算法,在问题划分过细时,效率也会降低。Google 的经验法则是采用服务器级计算机中的低端型号(Barroso 和 Hölzle,2009)。

一个具体例子来自 Reddi 等(2010):他们比较了运行 Bing 搜索引擎的嵌入式微处理器 Atom 与服务器微处理器 Nehalem Xeon。结果发现,Atom 的查询延迟约为 Xeon 的三倍;Xeon 也更稳健。随着负载增加,Xeon 的服务质量缓慢、小幅下降;Atom 在试图承受额外负载时,很快就无法满足服务质量目标。虽然 Atom 的能效更高,但响应时间会影响收入,收入损失很可能远高于节能带来的成本节省。无法满足响应时间目标的高能效设计,很难获得部署;下一章 7.9 节还会看到这一陷阱的另一个实例。

这种行为会直接转化为搜索质量差异。鉴于延迟对用户的重要性,正如原文所引图 6.37 所示,只要查询延迟尚未超过截止时间,Bing 搜索引擎就会采用多种策略改善搜索结果。较大的 Xeon 节点延迟较低,因此有更多时间改进结果。于是,即使 Atom 几乎没有负载,也有 1% 的查询答案比 Xeon 差;正常负载下,这个比例为 2%。Kanev 等(2015)给出了更新、但结论一致的结果。

译注: 此处原文引用图 6.37,但图 6.37 是 Nitro 虚拟机启动过程。关于服务延迟影响的相邻图表是图 6.36,原书交叉引用疑有误。

陷阱:不同公司的 PUE 测量口径不一致

Google 的 PUE 测量从电力到达变电站之前开始。有些公司从 WSC 入口测量,跳过了降压环节,而这部分损耗可达 6%。如果 WSC 利用室外空气辅助冷却,季节不同,结果也会不同。最后,有些公司报告的是 WSC 设计目标,而不是建成系统的实测值。最保守、也最好的 PUE 测量方法,是从公用电网供电入口开始测量,并报告过去 12 个月的滚动平均值。

谬误:WSC 设施的资本成本高于其中服务器的资本成本

匆匆看一眼图 6.33,或许会得出这个结论,却忽略了整个 WSC 各部分不同的摊销年限。设施可使用长达 20 年,服务器则每三四年就要重新购置。按图 6.33 分别采用 10 年和 3 年摊销期,十年内设施资本支出为 7200 万美元,服务器则为 3.3×67003.3\times6700 万美元,即 2.21 亿美元。因此,十年内 WSC 服务器的资本成本约为设施的三倍。原文所引图 3.34 的 TCO 分解也印证了这一点。

译注: 原文此处写“图 3.34”,相应 TCO 分解图实际是本章图 6.34。金额和倍数保留原文口径。

陷阱:试图依靠停止工作的低功耗模式,而不是仍可工作的低功耗模式来节电

图 6.35 表明,通用集群中服务器的平均利用率可能在 10%–50% 之间。考虑到 6.7 节讨论的 WSC 运营成本问题,人们可能认为低功耗模式会大有帮助。

第 1 章指出,DRAM 或磁盘进入不工作的低功耗模式时无法访问,因此无论读写速率多低,都必须先恢复到完全工作模式。问题在于,恢复所需的时间与能量,降低了这类低功耗模式的吸引力。图 6.35 显示,几乎所有服务器的平均利用率都至少为 10%;因此,可以预期长时间的低活动水平,却不能预期长时间完全不活动(Lo 等,2014)。

相比之下,处理器在低功耗模式下仍可运行,只是速率低于正常水平,因此仍可工作的低功耗模式更容易使用。处理器恢复到完全工作模式的时间也以微秒计,因而这类模式还缓解了低功耗模式引起的延迟顾虑。

译注: 原句将运行速率写作“at a small multiple of the regular rate”,未给出具体倍率。“低于正常水平”是根据本段对低功耗模式的讨论作出的语境解释,不能据此确定具体降频比例。

谬误:DRAM 的可信赖性已经提高,WSC 系统软件也能容错,因此不必额外花钱采用 ECC 内存

ECC 为每 64 位 DRAM 增加 8 位,因此取消纠错码(ECC),理论上可以节省九分之一的 DRAM 成本。尤其是曾有 DRAM 测量报告称,每兆位的失效率只有 1000–5000 FIT,FIT 表示每十亿运行小时的失效次数(Tezzaron Semiconductor,2004)。

Schroeder 等(2009)研究了 Google 大多数 WSC 中受 ECC 保护的 DRAM,测量持续 2.5 年,覆盖的服务器无疑有数十万台。研究发现,FIT 比已发表数据高 15–25 倍,即每兆位 25,000–70,000 次失效。超过 8% 的 DIMM 受到失效影响;每个 DIMM 平均每年发生 4000 次可纠正错误和 0.2 次不可纠正错误。按服务器统计,每年约三分之一的服务器经历 DRAM 错误,平均每年发生 22,000 次可纠正错误和 1 次不可纠正错误。原文接着说:也就是说,对三分之一的服务器而言,每 2.5 小时就会纠正一次内存错误。注意,这些系统采用的是更强大的 Chipkill 编码,而不是较简单的 SECDED 编码。如果采用后者,不可纠正错误率将高出 4–10 倍。

如果 WSC 只有奇偶校验保护,服务器每遇到一次内存奇偶校验错误都必须重启。假如重启耗时 5 分钟,那么三分之一的机器将把 20% 的时间花在重启上!这种行为会使这套昂贵设施的性能下降约 6%。此外,这些系统还会遭遇大量不可纠正错误,而操作人员甚至不会收到发生错误的通知。

译注: 原文“平均每年 22,000 次可纠正错误”与“每 2.5 小时一次”不一致。按一年 8760 小时计算,前者对应约每 0.40 小时一次;若每次重启 5 分钟,则约占 21% 的时间,与后文的 20% 接近。

Google 早年使用的 DRAM 甚至没有奇偶校验保护。2000 年,在下一版搜索索引发布前的测试中,系统开始针对测试查询推荐随机文档(Barroso 和 Hölzle,2009)。原因是某些 DRAM 出现固定为零的故障,破坏了新索引。Google 因此增加了一致性检查,以便将来检测这类错误。随着 WSC 规模扩大、ECC DIMM 价格更容易负担,ECC 成为 Google WSC 的标准配置。ECC 还有一个额外好处:维修时更容易找到损坏的 DIMM。

这些数据有助于解释第 4 章的 Fermi GPU 为什么为内存增加 ECC,而其前代产品甚至没有奇偶校验保护。这些 FIT 数据也让人怀疑:仅因 Intel Atom 处理器能效较高,就尝试把它用于 WSC 是否合适,因为其芯片组并不支持 ECC DRAM。

陷阱:无法像处理纳秒或毫秒延迟那样,有效处理微秒延迟

Barroso 等(2017)指出,现代计算机系统让程序员容易缓解纳秒级和毫秒级延迟,例如数十纳秒的缓存与 DRAM 访问,以及数毫秒的磁盘访问,却明显缺少对微秒级事件的支持。存储层次结构向程序员提供同步接口,硬件承担大量工作,使访问表现出正确的存储一致性与缓存一致性(第 2 章)。操作系统为磁盘读取提供类似的同步接口:大量操作系统代码确保等待磁盘时能安全切换到其他进程,数据准备好后再返回原进程。对于 Flash 等存储技术或 200 Gbit/s 以太网等高速网络接口带来的微秒级延迟,我们需要新的应对机制。

谬误:在活动较少时关闭硬件,能提高 WSC 性价比

图 6.33 表明,配电与冷却基础设施的摊销成本,比整个月的电费还高 50%。因此,把负载集中起来、关闭空闲机器,固然能省一些钱;但即使节省一半电力,每月运营费用也只降低 7%。还有实际问题需要解决:WSC 广泛部署的监控基础设施,依赖于向设备发出探测并检查响应。能耗与工作量成比例、以及仍可工作的低功耗模式,还有一个优点:

它们与 WSC 监控基础设施兼容,而这种基础设施使一名操作人员能够负责超过 1000 台服务器。还应注意,预防性维护正是空闲时间执行的重要任务之一。

WSC 的通常做法是在活动较少时运行其他有价值的任务,收回配电与冷却方面的投资。典型例子是为搜索创建索引的 MapReduce 批处理作业。AWS 的竞价机制也是从低利用率中获取价值的一例。如果用户能够灵活选择任务运行时间,允许 AWS 通过竞价实例更灵活地安排任务,例如放在 WSC 原本利用率较低的时段,计算费用最高可降至原来的四分之一。

谬误:Flash 设备只有存储频繁访问的温数据才划算

Flash 的每位成本比硬盘高一个数量级。不过,对某些冷数据存储系统,Flash 也可能具有成本效益。以社交网络发布照片的存储系统为例,多数旧照片很少被访问;但用户一旦请求查看旧照片,仍期待交互式响应。使用硬盘的冷存储系统,为满足 SLO 的延迟要求,就必须让磁盘保持旋转,每块磁盘约消耗 5 W。基于 Flash 的冷存储系统在空闲时效率更高,因为它没有运动部件,而且半导体芯片可以更快退出低功耗模式。节省的能源成本可能抵消 Flash 设备增加的购置成本。

译注: 原句印为“can exist low power modes faster”,其中 exist 与句法和上下文不符;这里按 exit(退出)理解。正文的其他数据保留原样。