通过故障注入测试,不仅可以验证EDAC模块是否正确地检测到人为制造的内存错误,还能评估系统的错误处理逻辑是否按照预期工作,比如是否正确记录错误、是否采取了适当的响应措施(如记录日志、发送告警等)。这对于系统稳定性测试、硬件兼容性验证以及确保在实际运行中能够有效管理内存错误至关重要。
如何利用APEI Error Injection (EINJ) 功能来测试和验证Linux内核中EDAC模块的正确性:
-
检查EINJ表的存在与配置:首先,通过查看
/sys/firmware/acpi/tables/EINJ
文件确认系统支持EINJ表。接着,在内核配置中确认CONFIG_DEBUG_FS
,CONFIG_ACPI_APEI
, 和CONFIG_ACPI_APEI_EINJ
已被启用,这三者是使用EINJ的基础。如果未启用,可能需要重新编译内核或加载einj
模块。 -
安装einj模块:使用
modprobe einj
命令加载该模块,为错误注入做好准备。 -
确定内存地址范围:通过
/proc/iomem
获取系统内存的分配情况,选择一个合适的未被占用的地址进行错误注入。这是因为注入错误到系统正在使用的内存区域可能会导致不稳定或崩溃。 -
确定内存页大小:使用
getconf PAGESIZE
命令获取页面大小,这对于精确控制注入错误的位置非常重要。 -
进入错误注入目录:通过
cd /sys/kernel/debug/apei/einj/
进入EINJ操作的目录。 -
配置错误类型和参数:通过写入不同的值到
error_type
,param1
(内存地址),param2
(地址掩码), 和notrigger
来设定错误类型、目标内存位置等。例如,注入一个可纠正错误(CE)。 -
触发错误注入:通过写入一个非零值到
error_inject
来执行实际的错误注入。 -
检查日志和验证:最后,通过查看系统日志(如
/var/log/messages
)和使用edac-util -v
命令来确认错误是否被正确记录到预期的内存条上,并观察CE计数是否增加。
参考文献:
-
https://www.kernel.org/doc/html/v4.10/admin-guide/ras.html
-
https://www.kernel.org/doc/html/latest/driver-api/edac.html
-
https://www.sohu.com/a/779374189_121207965
如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!
精彩推荐:
-
一文读懂DDR内存基础知识|值得收藏
-
如何利用CXL技术突破内存墙?
-
磁带存储:“不老的传说”依然在继续
-
浅析3D NAND多层架构的可靠性问题
-
SSD模拟器MQSim简介与资料分享
-
孙凝晖院士万字长文|人工智能与智能计算的发展
-
探究NVMe SSD HMB应用场景与影响
-
深度剖析:大容量QLC SSD为何遭疯抢?
-
SSD突然掉电,是谁保护了用户数据?
-
漫谈HAMR硬盘的可靠性
-
万物皆可计算|下一个风口:近内存计算
-
SSD数据错误如何修复?
-
CXL与PCIe世界的尽头|你相信光吗?
-
全景剖析SSD SLC Cache缓存设计原理
-
存储革新:下一代低功耗PCM相变存储器
-
3D DRAM虽困难重重,最快明年到来
-
字节跳动入局存储内存SCM
-
PCIe 7.0|不要太卷,劝你先躺平
-
SSD LDPC软错误探测方案解读
-
关于SSD LDPC纠错能力的基础探究
-
存储系统如何规避数据静默错误?
-
PCIe P2P DMA全景解读
-
深度解读NVMe计算存储协议
-
对于超低延迟SSD,IO调度器已经过时了吗?
-
浅析CXL P2P DMA加速数据传输的原理
-
浅析LDPC软解码对SSD延迟的影响
-
为什么QLC NAND才是ZNS SSD最大的赢家?
-
SSD在AI发展中的关键作用:从高速缓存到数据湖
-
浅析不同NAND架构的差异与影响
-
SSD基础架构与NAND IO并发问题探讨
-
字节跳动ZNS SSD应用案例解析
-
CXL崛起:2024启航,2025年开启新时代
-
NVMe SSD:ZNS与FDP对决,你选谁?
-
浅析PCI配置空间
-
浅析PCIe系统性能
-
存储随笔《NVMe专题》大合集及PDF版正式发布!