一个RAM模块中的坏字节/正在使用的RAM块区域

我在一台服务器上有四个512 MB RAM模块。 当我使用memtest86 +来testingRAM时,第四个RAM只显示一位错误。 即使我在第四个插槽与其他RAM交换RAM时,仍然在第四个插槽的RAM中出现错误。 所以我想阻止服务器使用RAM的一个特定的地址(或4kb的页面,如果需要的话)。 服务器有fedora 11,仅用于testing目的。 它不托pipe任何用户应用程序。 任何想法如何我可以阻止某些部分的内存使用? 或者什么导致错误来在特定的字节,而不pipeRAM模块安装。

我最近发现有一个内核参数(例如在grub config中提供,

MEMMAP = [ammount的] M $ [startlocation]中号

您可以多次提供它来locking部分内存。

例如。

MEMMAP = 3M $ 217M

从217到219locking兆字节

曾经有过用于Linux的“BadMEM”补丁,但是需要一点努力才能升级到当前的核心。

http://badmem.sourceforge.net/docu/BadMEM-HOWTO.html

您的testing显示,这听起来像是主板上可能存在的坏插槽。 除了没有使用这个插槽,我从来没有看到过这个方法。 据我所知,没有简单的答案。 我想可能会创build一些软件,但是像尼克说的那样,这更像是个问题。

我不认为你可以lock-out一个RAM地址范围的特定部分。
它由您的操作系统的虚拟内存pipe理拥有。

但是,这是一个有趣的应用程序 – 从OS中lockingdynamic内存地址范围。 如果有这样的技术可用(对于任何操作系统),我有兴趣了解它。

如果它不可用,这听起来像是一个有趣的项目尝试。
但是,这将是一个stackoverflow问题。

你可以编写一个内核扩展,在加载的时候,只是分配这个页面,然后别的什么都不做。

唉,我不知道该怎么做。 当我以前在IBM VM系统上工作时,这是内置的,但这当然没有帮助。

正如Trogy所说,这可能是一个主板缺陷,甚至是一个CPU缺陷(尽pipe在这种情况下不太可能)。

我也有同样的问题,但是发现可用的答案令人困惑和不完整,所以我把一步一步的指导放在一起,尽可能less的背景。

  1. 在“Badram”输出中运行Memtest86 +(最好从可启动的外部媒体中运行)。 当Memtest86 +启动时,键入:
  2. “c”(“configuration”),那么
  3. “4”(“错误报告模式”)
  4. “3”(“坏内存模式”),然后
  5. “0”(“继续”)。
  6. 复制以“badram =”开头的行之后的输出。
  7. 打开一个terminal(命令行)。
  8. 切换到“grub”文件所在的目录。 例如,“cd / etc / default”。
  9. 使用“root”权限,使用文本编辑器打开“grub”文件(如果您没有以“root”身份login,请使用“sudo”。系统会要求您提供“root”密码。):“sudo nano grub“(本例将用户改为”root“,并用”nano“文本编辑器打开文件”grub“)。
  10. find描述memtest的部分。
  11. 取消注释最后一行(删除行首的特殊字符,如“#”,“>”或“!”)。 这会使其处于活动状态(例如“#GRUB_BADRAM =”变为“GRUB_BADRAM =”。)。
  12. 使用从Memtest86 +复制的“badram =”输出(例如“0x98f548a0,0xfffffffc”)replace示例地址(在“GRUB_BADRAM =”之后)。
  13. 保存(或“写出”)您的更改。
  14. 在terminal(命令行)通过input“sudo update-grub”更新“grub.cfg”文件。
  15. 重启。