WSC 是一个系统
数万台服务器被作为统一的大规模系统设计和运营
CS152 · 第 24 课
这一课把体系结构的视角从单芯片、单服务器,拉高到整个仓库规模计算机(Warehouse-Scale Computer)——当规模扩大到几万台服务器时,功耗、散热、故障率本身都变成了一等的架构设计约束,而不再是事后才考虑的工程细节。
仓库规模计算机(Warehouse-Scale Computer, WSC)是容纳数万台服务器的大型设施,被作为一个统一的大规模系统来设计和运营,而不是一堆互不相关的机架的简单堆叠。驱动其设计的经济学考量包括资本支出、运营支出、以及服务器成本与电力/散热/场地成本之间的总体拥有成本(TCO)权衡。
电力分发层级:市电 → 变电站 → 配电柜 → 配电单元(PDU)→ 机架 → 服务器,每一级都有损耗,UPS(不间断电源)放置在哪一级也是一项权衡。核心效率指标 PUE(Power Usage Effectiveness,电源使用效率):
\[ \text{PUE} = \frac{\text{设施总用电}}{\text{IT 设备实际用电}} \]
PUE=1.0 是(不可能达到的)理想值——意味着所有电力都用于计算本身。
组合效率计算实例(重新验算):如果散热环节损耗约 6%,配电环节损耗约 4%,两级损耗相乘得到综合效率:
\[ \text{效率} = 0.94 \times 0.96 = 0.9024 \]
\[ \text{sPUE} \approx \frac{1}{0.9024} \approx 1.108 \]
重新计算:0.94×0.96=0.9024,1/0.9024≈1.1082,幻灯片四舍五入为"约 1.1"——与重新验算完全一致。这个例子直观说明:看似不大的单级损耗(6%、4%),组合起来对整体能效的影响是乘法性的,而不是简单相加。
在仓库规模系统中,个别硬件组件失效是常态而非异常——这与单机可靠性假设("这台机器应该一直正常运行")形成鲜明对比。冗余和优雅降级必须从设计之初就被内建进系统,而不是事后补救。这也解释了为什么 WSC 的软件架构(分布式存储、无状态服务、自动故障转移)与单机操作系统的设计哲学如此不同。
WSC 的工作负载特征是请求级并行:大量独立的请求分散在成千上万台机器上处理,这与单节点内部的数据级/线程级并行是完全不同维度的并行。由此引出尾延迟(tail latency)问题:当一次用户请求需要 fan-out 到成百上千台机器、再汇总结果时,用户感知到的延迟由最慢的那几台机器(P99、P999 分位数)决定,而不是平均延迟——这要求 WSC 级别的服务必须专门针对尾部分位数进行工程优化,而不能只关注平均情况。
本讲末尾的机架/网络拓扑示意图(服务器→机架→机架顶部交换机→汇聚层交换机)直接引出下一讲要展开的互联网络话题。
问题 1:如果散热环节损耗约 6%、配电环节损耗约 4%,两级损耗独立作用,综合 sPUE 大约是多少?
问题 2:仓库规模计算机(WSC)在可靠性设计上,与单机系统的根本假设有什么不同?
问题 3:为什么"尾延迟(tail latency)"在 WSC 级别的服务中特别重要,而不能只关注平均延迟?
数万台服务器被作为统一的大规模系统设计和运营
功耗分发的多级损耗以乘法方式组合,而非简单相加
冗余和优雅降级必须从设计之初内建,而非事后补救
fan-out 场景下,用户体验由最慢的少数请求决定
sp23/lecture_slides/L24_Hyperscale_Architecture.pdf(UC Berkeley CS152/CS252A, Spring 2023;客座讲座,本地文件未标注具体主讲人姓名)