memtester 在线内存压测
memtester 在运行中的系统里申请一块内存,然后反复写入特定模式并回读校验,通过比对差异发现内存错误。它的定位是维护窗口内的快速验证工具:因为只能操作可分配的用户态内存,已经被内核占用的区域不在覆盖范围内,所以它通过不等于整机内存没问题。真正要覆盖全部区域,需要在离线状态下用可启动的内存测试工具。
基本信息
| 适用平台 | Linux(发行版仓库通常自带) |
|---|---|
| 运行方式 | 指定待测内存大小与轮数 |
| 权限要求 | 普通用户即可,但需足够空闲内存 |
| 适用场景 | 维护窗口内的快速稳定性验证 |
| 能力边界 | 只覆盖可分配的用户态内存区域 |
| 输出内容 | 失败时报告地址与期望值、实际值 |
典型使用场景
- 更换内存条后做一轮系统内验证
- 维护窗口内快速确认机器是否稳定
- 与离线测试配合:先离线跑完整轮次,再在线复核
- 排查间歇性错误时缩小可疑范围
- 交付前的基础验证项目之一
使用示例
使用示例
# 先看可用内存,确定测试规模(被测内存应小于空闲量)
free -g
# 安装工具(Debian 系用 apt install memtester)
yum install -y memtester
# 测试 8G 内存,跑 2 轮
memtester 8G 2
# 记录输出到文件,便于与后续结果对比
memtester 8G 2 2>&1 | tee memtester_$(date +%F).log
# 测试期间观察是否出现内核侧错误记录
dmesg -T | grep -iE 'edac|mce|memory error' | tail -10结果判读
| 现象 | 含义 | 后续动作 |
|---|---|---|
| 正常输出进度 | 测试进行中 | 等待完成并记录耗时 |
| 报告地址与期望值差异 | 检测到内存数据不一致 | 保存日志,结合 EDAC 与 SEL 定位 |
| 进程被终止 | 分配超过可用内存被回收 | 减小测试规模后重试 |
| 运行时间异常长 | 内存容量大或系统负载高 | 在维护窗口内留足时间 |
| 全部通过 | 该区域未发现问题 | 结合离线测试结论综合判断 |
被测内存量应小于当前空闲内存:压到交换空间会引入大量磁盘 IO,不仅拖慢测试,还会掩盖内存问题的真实表现。
压测会占用大量内存与 CPU:不要在生产业务时段执行,否则可能触发业务侧内存不足或响应变慢。