air-gapped/memory-tester
GitHub: air-gapped/memory-tester
一款用 Rust 编写的服务器内存深度诊断工具,通过关联 DIMM 拓扑与多维错误数据,解决厂商工具无法精准定位的复杂内存故障问题。
Stars: 1 | Forks: 0
# memory-tester
针对厂商工具无法解决的场景的服务器内存诊断。厂商的诊断工具仅测试位并记录事件;没有任何工具能将 DIMM 身份(序列号)、插槽/通道拓扑、错误历史和物理证据整合为一份可分析的记录。而本工具可以做到。
它旨在理清以下故障模式:
1. 在一系列插槽范围内报告的错误,且在更换或移除被怀疑的 DIMM 后依然存在(区分 DIMM、插槽、通道还是 CPU 插槽)。
2. 识别层故障:启动时识别到的 DIMM 数量少于物理安装的数量、未知/灰色模块状态,或者报告在未占用插槽中存在模块(SPD/SMBus/BMC 清单路径异常)。
支持的平台拓扑表(自动检测):Dell PowerEdge R860(4 路 Sapphire Rapids,DDR5)和 R6525(2 路 EPYC 7003,DDR4)。
添加一个平台 = 只需根据其服务手册创建一个映射模块。
## 此工具的功能
1. **持续追踪物理真相** — 哪个 DIMM 序列号位于哪个插槽中(插槽 → 通道 → CPU 插槽映射),在每次关机更换操作前后进行快照。
2. **将错误与拓扑关联** — 摄取 EDAC/rasdaemon、dmidecode/SMBIOS、mcelog/MCE 以及(在可用时)iDRAC/Redfish 的数据,并将每个错误映射到其发生时的物理位置。
3. **推荐下一步实验** — 根据错误历史和更换记录,提出能最好地区分 DIMM、插槽、通道还是 CPU 的最小更换方案。
4. **支持 AI/人机协同循环** — 所有输出均为结构化数据,可被 Claude Code 等工具读取;数据包被提交到 git 中,以便 AI 可以读取历史记录,发现人类忽略的模式,并建议下一步测试。
## 设计决策(当前)
1. Rust;单一静态二进制文件,可在服务器、操作员工作站和 QEMU 客户机上运行。
2. 数据包:仅追加的证据目录;逐字记录的原始层是基准事实;`topology.json`(平台自动检测:R860、R6525)使每个数据包均可通过 jq 进行关联;派生的 JSON 服务于当下(架构 v2)。
3. Agent 优先:工具负责收集和关联;推理由 Claude + 人类完成;人类执行工作指令。
4. 完全基于模拟开发(无需访问目标服务器);通过克隆代码库(主要方式)或现场工具包 tarball(备用方式)进行现场部署。
## 无二进制发布
设计上仅限代码库:请自行构建。
```
cargo build --release # native
cargo build --release --target x86_64-unknown-linux-musl # static, for servers
```
## 用法
`memory-tester --help`(命令 + 循环)和 `docs/RUNBOOK.md`(完整流程)是事实来源。使用 `scripts/build-field-kit.sh` 构建现场工具包;使用 `scripts/vm-harness.sh /tmp/vm` 运行 QEMU 端到端测试。
## 参考
- `docs/RUNBOOK.md` — Agent 手册:精确的诊断顺序。
- `docs/r860-memory-digest.md`,`docs/r6525-memory-digest.md` — 插槽/通道映射、配置规则、来自 Dell 手册的维护流程(包含页码引用)。
- `docs/research/dimm-fault-diagnosis-research-2026-07-27.md` — 深度研究报告(9 个 Agent,约 90 个来源):故障分类法和分类规则,Linux EDAC/rasdaemon 陷阱,RAS 错误屏蔽清单 + 最大可见性 BIOS 配置方案,Dell 更换/PPR 原则,iDRAC/Redfish 摄取面,贝叶斯更换方案顾问设计,以及选择 Rust 语言的决定。
标签:Dell PowerEdge, Rust, 内存诊断, 可视化界面, 故障排查, 服务器运维, 硬件拓扑, 网络流量审计, 身份验证强制, 通知系统