Linux 是否有某种机制可以在后台在线测试内存,将坏内存标记为不可用,并在内存出现故障时警告用户?
非常类似于每 n 分钟在一小块内存上运行 Memtest86+,直到测试完所有内存,然后重复。
编辑:我没有明确说明我希望这样的服务在内核中运行。应通过小步运行测试并仅在系统有一些 CPU 周期可用时运行测试来避免(峰值)性能下降
编辑2:我的意思是这是一个在后台扫描内存的Linux内核服务。不打算在用户空间中运行,而是内核本身的一个例程,也许在内存管理器中,以确保内存是健全的!
答案1
有一个 memtester 应用程序。如果你正在运行 ubuntu 或者其他与 repo 相关的程序,你可以使用以下命令进行安装:
apt-get install memtester
这不能将内存标记为故障,但可以提醒用户内存有问题,并且本质上可以起到 memtest86 的作用。如何将其放入脚本取决于您。以下是一些参考网站:http://www.cyberciti.biz/faq/linux-how-do-i-find-out-causes-for-memory-faults/
答案2
用户进程无法真正测试全部(物理)内存,因为 Linux 使用内存管理并分配虚拟内存空间。在最坏的情况下,内存测试程序认为它正在测试兆字节的内存,但由于虚拟内存和分页,可能只会测试几个 4096 字节的物理内存页面。
因此,Linux 中的内存测试器当然可以测试内存逻辑硬件,但无法访问每个物理内存位置。虚拟内存和内核重定位问题的任何解决方法都可能带来不可接受的安全漏洞。