服务器报内存 CE 和 UE,该怎么处理
服务器管理界面弹出内存错误告警,第一件事是分清是 CE 还是 UE。这两个的紧急程度和处理方式差别很大。
CE:业务没受影响,但要记账
CE 是 Correctable Error,ECC 检出并纠正了错误,送给 CPU 的数据是正确的,业务无感。系统会记录一条日志。
单次 CE 不需要立即动作。要看的是趋势:
- 偶发、地址分散:可能是软错误,记录观察;
- 反复出现在同一物理地址:硬缺陷,安排处理;
- 频率持续上升:颗粒在退化,尽快安排;
- 集中在同一 DIMM 的多个地址:该条整体余量不足,建议更换。
把 CE 当成噪声全部屏蔽是常见做法,也是最容易踩坑的做法。UE 往往有几周甚至几个月的 CE 前兆期,屏蔽掉等于放弃预警。
UE:数据已经错了
UE 是 Uncorrectable Error,ECC 检出但纠不了。此时数据不可信,系统的反应取决于配置:可能触发机器检查异常直接宕机,可能杀掉相关进程,也可能标记页面不可用后继续运行。
UE 的处理没什么犹豫空间:定位到具体 DIMM,隔离或更换。在此之前不要把这台机器放回承载关键业务。
怎么定位到具体那一根
日志里的地址是物理地址,需要转成插槽位置。可用的途径:
- BMC 或带外管理界面通常直接给出 DIMM 插槽编号,最省事;
- Linux 下用 EDAC 相关工具或 mcelog 解析,能拿到通道和插槽信息;
- 厂商自带的诊断工具一般也能定位;
- 信息不全时用排除法:拔到最小可运行配置再逐根加回,费时但有效。
定位到位之后记录 DIMM 的序列号,这是后续追溯批次的依据。
修还是换
如果平台支持 PPR,且失效是孤立的行,可以尝试修复:
- 先用 sPPR 临时顶住,观察是否还报错;
- 维护窗口做 hPPR 永久修复;
- 修完做一轮压测,最好带温度,确认不是别处还有问题。
什么情况下别修直接换:失效点分布成行列图案、同一条上多处失效、修复后短期内又报错、条子已经修过多次。这些都说明颗粒整体余量不足,修了也是拖时间。
几个容易忽略的非内存原因
报内存错不一定是内存坏。以下情况要一并检查:
- 插槽接触。重新插拔并清洁金手指后复测,相当一部分问题这样就解决了;
- 机箱温度过高。风扇故障、滤网堵塞、机柜热回流,都会把内存推到边界;
- 混插。不同批次、不同 rank 数、不同厂商混在同一通道,边界条件下容易出错;
- BIOS 版本。内存训练算法的问题会以内存报错的形式表现,升级后消失;
- 供电。电源老化导致纹波超标,先坏的往往是内存。
把这几项排除掉再判条子坏,能减少不少无效更换。