我在一台服务器中有四个 512 MB RAM 模块。当我使用 memtest86+ 测试 RAM 时,第四个 RAM 仅显示一位错误。即使我将第四个插槽中的 RAM 与其他一些 RAM 交换,我仍然会在完全相同位置的第四个插槽中的 RAM 中出现错误。因此,我想阻止服务器使用 RAM 的一个特定地址(或 4kb 页面,如有必要)。服务器具有 Fedora 11,仅用于测试目的。它不托管任何用户应用程序。关于如何阻止使用 RAM 的某些部分的任何想法?或导致错误出现在特定字节的原因,而与安装的 RAM 模块无关。
我最近发现有一个内核参数(在启动时提供,例如在 grub 配置中)
memmap=[数量]M$[起始位置]M
您可以多次提供它以锁定部分内存。
例如。
内存映射=300 万美元 2.17 亿美元
锁定从 217 到 219 的兆字节
曾经有适用于 Linux 的“BadMEM”补丁,但是将其升级到当前的内核需要一些努力。
http://badmem.sourceforge.net/docu/BadMEM-HOWTO.html
正如您的测试显示的那样,这听起来像是主板上可能的坏插槽。除了不使用该插槽之外,我从未见过解决此问题的方法。据我所知,没有简单的答案。我想可以创建一些软件,但就像 nik 说的那样,这更像是一个 SO 问题。
我认为您不能
lock-out
指定 RAM 地址范围的特定部分。它归您的操作系统的虚拟内存管理所有。
然而,这是一个有趣的应用程序——从操作系统中锁定动态内存地址范围。如果有这样的技术可用(适用于任何操作系统),我有兴趣知道它。
如果它不可用,那听起来像是一个值得尝试的有趣项目。
但是,这将是一个 stackoverflow 问题。
你可以编写一个内核扩展,当它被加载时,它只会分配这个页面,然后什么都不做。
唉,我不知道该怎么做。当我以前在 IBM 的 VM 系统上工作时,这是内置的,但这当然没有帮助。
正如 Trogy 所说,这可能是主板缺陷,甚至是 CPU 缺陷(尽管在这种精确情况下不太可能)。
我遇到了同样的问题,但发现可用的答案令人困惑且不完整,因此我整理了一个分步指南,假设我的背景尽可能少。