有一篇论文,标题很有意思:

Feng Shui of Supercomputer Memory: Positional Effects in DRAM and SRAM Faults

直译是:超算内存的风水:DRAM 和 SRAM 故障中的位置效应

标题像玩笑。
但问题很严肃:

在大型生产系统里,内存故障到底和什么有关?
是芯片供应商?是老化?是机房位置?是海拔?还是纯随机?

这篇论文研究了两个美国 DOE 体系里的大型超算系统:

  • Cielo:约 8,500 个节点,位于 Los Alamos,高海拔,DDR3 内存,15 个月观测数据,约 230 亿 DRAM device-hours
  • Jaguar:18,688 个节点,位于 Oak Ridge,低海拔,DDR2 内存,11 个月观测数据,约 171 亿 DRAM device-hours

这不是实验室小样本。
这是生产环境里的真实故障数据。

论文表面研究的是内存可靠性。
但我觉得它最有价值的部分不是某个具体故障率,而是方法论:

大规模数据不会自动产生真相。
如果指标选错、分母选错、混杂变量没控制,大数据只会大规模地产生幻觉。


1. 先分清 fault 和 error

论文第一件重要的事,是区分两个词:

  • fault:故障原因
  • error:故障导致的错误状态

这不是文字游戏。

比如一个 DRAM bit 坏了。程序频繁访问它。每访问一次,ECC 都可能记录一次 corrected error。日志里可能出现几百条 error message。

但底层原因只有一个:

一个 fault,很多 errors。

如果直接统计 error count,你统计到的其实是:

fault rate × workload access pattern × logging behavior

这很脏。

一个地址报错多,可能不是那里更容易坏,而是那里被访问得更多。

所以这篇论文选择研究 fault rate,而不是 error rate。
作者把每个 DRAM device 上第一次观察到的 error message 视为该 device 的 fault occurrence time。后续 error 用来判断故障类型和模式。

这就是第一性原理:

别数症状。数病因。


2. 故障类型:transient vs permanent

论文把故障分成两大类:

Transient fault:瞬态故障

随机发生,不代表器件永久损坏。
典型例子是高能粒子击中存储单元,导致 bit flip。

写入正确数据或 scrubber 修正后,问题消失。

Permanent fault:永久故障

包括 hard fault 和 intermittent fault。
也就是持续或反复出现的问题,通常说明器件损伤、不稳定或存在制造缺陷。

严格来说,hard fault 和 intermittent fault 不一样。
但在真实生产系统里,很难知道每一次内存访问是否都返回错误。作者没有完整访问轨迹,只有日志。

所以他们做了一个工程上合理的合并:

permanent = hard + intermittent

不是完美。
但可测。

他们靠硬件 scrubber 区分 transient 和 permanent:

  • 如果错误只出现在一个 scrub interval 内,判为 transient
  • 如果错误跨多个 scrub interval 反复出现,判为 permanent

Cielo 的 scrub interval 是:

  • DRAM:24 小时
  • L2 SRAM:10 秒
  • L3 SRAM:129 秒

这是整篇论文的方法论地基。


3. DRAM 的第一个结论:早期从永久故障转向瞬态故障

Cielo 的整体 DRAM fault rate 是:

  • 0.038% DRAM devices 出现 fault
  • 1.32% DIMMs 出现 fault
  • 40.33 FIT/device
  • 换算到整个 Cielo 系统,大约每 11 小时 出现一个 DRAM fault

单个芯片看起来很可靠。
但系统太大了。规模会放大一切。

更重要的是时间趋势。

作者发现,DRAM fault rate 随时间下降,但这个下降不是所有故障一起下降。

真正发生的是:

permanent fault rate 快速下降
transient fault rate 基本稳定

在 Cielo 上,两者的交叉点约在系统运行第 14 个月
在 Jaguar 上,约在第 17 个月

这说明 DRAM 早期主要受到 permanent faults 影响。那些制造缺陷、弱器件、早期失效会在系统前期暴露出来。经过一段时间后,永久故障下降,瞬态故障成为主要组成。

这像 bathtub curve 的前段。

所以不能简单说:

内存越老越坏。

更准确的说法是:

在生命周期早期,故障构成会变化;永久故障下降,瞬态故障稳定。

这对运维策略很重要。

早期应该更关注 DIMM replacement 和 weak device screening。
后期则更关注 ECC、scrubbing、checkpoint、retry 这类 transient mitigation。


4. DRAM 的第二个结论:供应商差异巨大

这是全文最有杀伤力的发现之一。

Cielo 使用了三个匿名 DRAM vendor:

  • Vendor A
  • Vendor B
  • Vendor C

它们的 fault rate 差异非常大:

Vendor Fault Rate
A 73.6 FIT/device
B 41.2 FIT/device
C 18.8 FIT/device

Vendor A 和 Vendor C 差了约:

73.6 / 18.8 ≈ 3.9x

接近 4 倍

更细看:

  • permanent fault rate 差约 2.3x
  • transient fault rate 差超过 6x

这不是小差异。
这是一级变量。

如果一个数据中心只看采购单价,不看可靠性成本,就会犯局部优化错误。

正确成本函数不是:

DIMM purchase price

而是:

purchase price
+ expected faults
+ replacement labor
+ downtime
+ job reruns
+ checkpoint overhead
+ uncorrected error risk

便宜内存可能是最贵的内存。

这篇论文最重要的方法论提醒是:

如果你研究 DRAM 可靠性,但不控制 vendor/device mix,你的结论可能是错的。

后面会看到一个非常漂亮的例子。


5. DRAM 内部有没有“风水”?

论文接着问:

DRAM 芯片内部某些位置是不是更容易发生 fault?

他们看了:

  • row
  • column
  • bank

这里的 bank 不是内存条上肉眼看到的黑色芯片。
黑色芯片是 DRAM device。
bank 是每个 DRAM device 内部的分区。

结构大概是:

DIMM
 └── DRAM device
      ├── bank 0
      ├── bank 1
      ├── ...
      └── bank 7

每个 bank 里面又有 row 和 column。
所以一个 DRAM 位置可以用:

bank + row + column

定位。

作者发现,大多数情况下,DRAM faults 在 row、column、bank 上近似均匀分布。

也就是说:

DRAM 内部没有明显风水。

只有一个例外:

Vendor A 在 column 0 出现 transient fault spike。

但继续拆之后发现,这不是所有 DRAM 的普遍现象,而是:

Vendor A-specific transient fault mode

所以结论不是“column 0 天生危险”。
结论是“某个 vendor 的某种故障模式集中在 column 0”。

这就是控制变量的价值。

如果不按 vendor 拆,你会讲一个错误故事。


6. 数据中心位置有没有“风水”?

更有意思的是机房位置。

作者一开始看到一个现象:

Cielo 中低编号 racks 的 DRAM fault rate 明显更高。

这太诱人了。

普通报告可能会马上解释:

  • 那边温度更高
  • 冷却不好
  • 电源质量差
  • 地板风道有问题
  • 机房布局有缺陷

但作者没有停在相关性上。

他们继续看每个 rack 的 vendor mix。
结果发现:

低编号 racks 装了更多 Vendor A。
高编号 racks 装了更多 Vendor C。

而前面已经知道:

Vendor A fault rate 高
Vendor C fault rate 低

所以低编号 rack 故障率高,根本不一定是位置原因。
可能只是那里装了更多糟糕的 DRAM vendor。

作者按 vendor 重新拆分 rack fault rate 后,原来的 rack 趋势基本消失。

这就是全文最漂亮的因果拆解:

表面现象:低编号 racks 故障率高
初步故事:机房位置效应
控制变量:vendor mix
真实解释:供应商分布效应

一句话:

DRAM 的机房风水,大多是供应商幻觉。


7. SRAM 不一样:它真的有位置和海拔效应

论文最后研究 SRAM,也就是 CPU cache 里的内存,包括 L2 和 L3 cache。

这里结论不同。

SRAM faults 超过 98% 是 transient。
这符合物理直觉。

SRAM soft error 很大程度上来自高能粒子。粒子穿过硅,产生电荷扰动,如果超过 cell 的 critical charge,就会导致 bit flip。ECC 修正后,器件本身并没有坏。

所以 SRAM 的模型更接近:

particle strike
→ bit flip
→ ECC correction
→ transient fault

Cielo 位于 Los Alamos,海拔约 7,300 feet。
Jaguar 位于 Oak Ridge,海拔约 875 feet。

高海拔意味着大气层屏蔽更少,宇宙射线诱发的中子通量更高。论文估计 LANL 和 ORNL 的中子通量比约 4.39x

实际观测:

  • Cielo 的 L2 SRAM transient fault rate 比 Jaguar 高约 2.3x
  • Cielo 的 L3 SRAM transient fault rate 比 Jaguar 高约 3.4x

方向一致,但小于 4.39x。
这说明除了 cosmic-ray neutrons,可能还有 alpha particles 等其他 fault sources。

更有意思的是 rack 内部高度。

Cielo 和 Jaguar 都显示:

top-of-rack SRAM fault rate 比 bottom-of-rack 高约 20%。

可能原因有两个:

第一,温度

冷空气从机房地板进入,先经过底部 chassis,再经过中部,最后到顶部。顶部更热。作者现场测量到从底部到顶部温度可增加约 16°C

温度会影响 SRAM soft error susceptibility。

第二,中子遮蔽和散射

宇宙射线诱发中子从上方来。顶部 chassis 先被打到。中子穿过上层硬件时可能发生散射,导致下层接收到的有效中子通量略低。

也就是说:

top chassis 更暴露
bottom chassis 被一定程度遮蔽

作者没有强行定因,只说需要 heat studies 和 beam studies。

这是正确态度。

所以:

DRAM 的风水大多是假的。
SRAM 的风水更接近真实物理。


8. 超算和普通数据中心有什么关系?

这篇论文研究的是超算,不是普通互联网数据中心。

Cielo 和 Jaguar 是大型 HPC systems。
它们运行在数据中心机房里,但目标和普通云数据中心不同。

超算的特点是:

大量节点
高速互连
紧耦合作业
长时间运行
MPI 通信
checkpoint/restart 敏感

普通云数据中心更像:

大量相对独立服务
负载均衡
副本机制
请求级重试
节点可替换

区别很大。

在云数据中心,一台服务器出问题,可以迁移 VM、重启实例、流量切走。
在超算里,一个节点出错,可能导致一个占用几千节点、运行数天的作业失败或回滚。

但这篇论文的方法论可以迁移。

不要直接搬数值。
要搬方法。

可以迁移的是:

fault ≠ error
用 device-hours 做分母
控制 vendor/device mix
区分 transient/permanent
不要把 rack correlation 直接当因果
把日志映射到具体硬件实体

这些适用于 GPU 集群、SSD 故障、网络丢包、云实例可靠性、甚至 AI inference error 分析。


9. 这篇论文真正教的不是内存,而是分析方法

我认为这篇论文最值得学的是这套流程:

1. 定义对象
   研究 fault,不研究 error count

2. 建立映射
   console log → physical address → DIMM/device → vendor → rack/chassis

3. 归一化分母
   faults / device-hours

4. 拆故障类型
   transient vs permanent

5. 拆故障模式
   bit / word / row / column / bank / rank

6. 控制混杂变量
   vendor, device, operational hours

7. 再判断位置效应
   DRAM: mostly no
   SRAM: yes

8. 用物理机制解释
   DRAM: vendor, aging, manufacturing
   SRAM: altitude, neutrons, temperature

这套方法比结论更重要。

因为很多系统分析失败,不是因为数据不够,而是因为问题定义错了。

常见错误是:

看到 error 多 → 以为那里更容易坏
看到 rack 故障高 → 以为机房位置有问题
看到时间趋势 → 以为老化单调变化
看到供应商便宜 → 以为总成本更低

错。

先问:

我数的是原因,还是症状?
分母对吗?
混杂变量控制了吗?
异常是不是某个 subgroup 造成的?
有没有物理机制支持?

10. 总结

这篇论文可以压成三句话:

第一:

DRAM 故障在生命周期早期会从永久故障为主,转向瞬态故障为主。

第二:

DRAM vendor 是巨大变量,不控制 vendor,就会把供应商问题误判成位置或环境问题。

第三:

SRAM 故障主要是瞬态,并且真的受海拔和 rack 高度影响。

再压缩一点:

DRAM 没有明显风水,SRAM 有一点。
但真正重要的是:先控制混杂变量,再讲故事。

就这样。


Comments

comments powered by Disqus