本文简介
DRAM 问题
- DRAM容量大、体积减小,表示一个位信息的存储单元变小,它更容易受外界因素影响发生错误
- 外界因素:射线辐射、温度、灰尘、降低DRAM功耗、电子和磁场
- 内部因素:内存密度、使用时间
- 错误:单个位或多个位发生翻转
- 静默错误(slient error):位翻转后污染了数据,程序使用污染的数据得出结果
- 软错误:暂时性错误
- 芯片没有损坏、是内存芯片随机发生的错误,在写内存后消失
- 使用ECC来内存清洗
- 空闲时对内存校验,发现错误进行纠正后重新写入内存
- 硬错误
- 芯片硬件错误
内存检测
- ECC
- 在程序每次从内存读取数据时,都会对从内存读出的数据进行校验,如果发现数据有错误,就会进行纠正
- ECC 只能对每个内存单元中发生的单个位错误进行纠正
- Memtest86+
- Memtest86+是在软件层面实现的离线内存检测器
- 直接运行在硬件之上,因此可以对内存进行任意的读写操作以检测错误
- 是系统中唯一的进程
- MCE
- Linux 内核提供给 Intel Pentium4、Xeon、Atom 和 P6 平台 18 号中断的中断服务例程
- 被称为机器检测异常,专门用于处理硬件错误 -包括系统总线错误、ECC 错误、奇偶校验错误、硬件高速缓存(cache)错误和 TLB(Translation Lookaside Buffer)错误
- RAMpage
- 由德国多特蒙德工业大学计算机科学学院的 Horst Schirmeier 所在的团队实现的 Linux 平台上的在线内存检测器
- 内核空间负责向操作系统申请内存,然后将申请到的内存提供给用户空间部分以进行检测