核心观点与关键数据
- 数据中心棘手问题:内存更正错误(CE)是大规模云基础设施中的常见问题,导致系统性能退化,且传统RMA方法难以发现和解决根本故障。
- EDAC增强功能回顾:Meta在Linux内核5.5版本中引入了增强的EDAC驱动程序,通过清除日志和后端存储能力,提升了错误报告的细节和持久性。
- 内存已更正错误分析:
- 研究方法:通过EDAC驱动程序收集来自多个主机的内存更正错误数据,并将其结构化分析。
- 错误分类与占比:
- 随机单比特错误(Random SBE):约50%
- 随机多比特错误(Random MBE):约16%
- 持久性单比特错误(Persistent SBE):约2%
- 持久性行错误(Persistent Row Error):约27%
- 持久性银行错误(Persistent Bank Error):约3.48%
- 单比特DQ错误(Single DQ Error):约12%
- 其他/杂项:约4.12%
- 关键学习与缓解思路:
- 随机暂态错误(如Random SBE)占比最高,可通过页面离线处理或更换DIMM解决。
- 持久性单比特错误(Persistent SBE)可通过封装后修复(PPR)解决。
- 行持久性错误(Persistent Row Error)可通过PPR解决。
- 可大规模调试特定供应商问题。
- MBE和多比特错误需要更关注。
- EDAC扩展提案:
- 提案 #1:扩展操作系统优先(OS-first)错误报告能力
- 目标:增强OS-first方法(如EDAC)的错误事件记录机制,弥补FW-first方法的不足。
- 具体建议:
- 添加报告命令/地址奇偶校验错误的功能。
- 添加已更正的内存缺失错误和PCIe纠正错误类型到日志。
- 扩展现有EDAC日志覆盖范围(如CE/UCR、巡航刮擦读取/写入CE/UCR)。
- 为内存更正、未更正的可恢复错误添加OS优先处理。
- 提案 #2:添加报告PCIe错误的功能
- 目标:将PCIe错误(如接收器错误、Bad TLP、坏DLLP等)纳入EDAC报告范围。
- 行动呼吁:
- 通过邮件列表和Wiki平台持续讨论和开发EDAC扩展功能。
- 合作开发EDAC扩展,设计需求/规格、实施及上游整合。
- 联系人:Anil Agrawal (anilagrawal@fb.com) 或 Jonathan Zhang (jonzhang@fb.com)。
研究结论
通过大规模部署和利用增强的EDAC驱动程序进行内存更正错误分析,Meta能够获得前所未有的细粒度错误特征,从而基于数据更有效地管理云基础设施中的内存错误。研究发现随机单比特错误是主要问题,而持久性错误可以通过现有或提议的机制(如PPR)解决。为了进一步提升错误管理和故障排除能力,Meta提出了扩展OS-first错误报告和纳入更多硬件类型(如PCIe)错误报告的EDAC扩展提案,旨在减少对传统SMI方法的依赖,并与OCP的操作系统中心方法保持一致。