Назад | Перейти на главную страницу

Плохой байт в одном модуле RAM / Блокировка области RAM от использования

У меня на одном сервере четыре модуля ОЗУ по 512 МБ. Четвертая RAM показывает ошибку только для одного бита, когда я использую memtest86 + для проверки RAM. Даже когда я заменяю ОЗУ в четвертом слоте другим ОЗУ, я все равно получаю ошибку ОЗУ в четвертом слоте в том же месте. Поэтому я хотел заблокировать один конкретный адрес (или страницу размером 4 КБ, если необходимо) от использования сервером. На сервере установлен Fedora 11, и он используется только для тестирования. Он не размещает никаких пользовательских приложений. Есть идеи, как я могу заблокировать использование определенной части ОЗУ? или о том, что вызывает ошибку в конкретном байте, независимо от установленного модуля RAM.

Недавно я обнаружил, что есть параметр ядра (для предоставления при загрузке, например, в конфигурации grub)

memmap = [количество] M $ [начальное местоположение] M

Вы можете использовать его много раз, чтобы заблокировать часть памяти.

например.

memmap = 3 миллиона 217 миллионов долларов

блокирует мегабайты с 217 до 219

Раньше был патч "BadMEM" для Linux, однако для обновления его до текущей версии потребуется немного усилий.

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

Как показало ваше тестирование, это похоже на возможный плохой слот на материнской плате. Я никогда не видел другого выхода, кроме как просто не использовать этот слот. Насколько мне известно, нет простого ответа. Я предполагаю, что какое-то программное обеспечение можно создать, но, как сказал Ник, это будет скорее вопрос SO.

Я не думаю, что ты сможешь lock-out определенные части диапазона адресов RAM.
Он принадлежит управлению виртуальной памятью вашей ОС.

Однако это интересное приложение - для блокировки диапазонов адресов динамической памяти из ОС. Если есть такая методика (для любой ОС), мне интересно ее знать.

Если он недоступен, это похоже на интересный проект.
Но это будет вопрос о переполнении стека.

Вы можете написать расширение ядра, которое при загрузке просто выделяет эту страницу и больше ничего не делает.

Увы, я не знаю, как это сделать. Когда я работал над системой виртуальных машин IBM, она была встроена, но это, конечно, не помогло.

Как сказал Троги, это может быть дефект материнской платы или даже дефект процессора (хотя в данном случае это маловероятно).

У меня была такая же проблема, но я нашел доступные ответы запутанными и неполными, поэтому я составил пошаговое руководство, предполагая как можно меньше знаний.

  1. Запустите Memtest86 + в выводе «Badram» (желательно с загрузочного внешнего носителя). При запуске Memtest86 + введите:
  2. «C» («конфигурация»), затем
  3. «4» («Режим отчета об ошибках»), затем
  4. «3» («Bad RAM Patterns»), затем
  5. «0» («Продолжить»).
  6. Скопируйте вывод, следующий за любыми строками, начинающимися с «badram =».
  7. Откройте терминал (командную строку).
  8. Перейдите в каталог, в котором находится файл «grub». Например, «cd / etc / default».
  9. С привилегиями «root» используйте текстовый редактор, чтобы открыть файл «grub» (если вы не вошли в систему как «root», используйте «sudo». Вам будет предложено ввести пароль «root».): «Sudo nano grub »(этот пример изменяет пользователя на« root »и открывает файл« grub »с помощью текстового редактора« nano ».).
  10. Найдите раздел с описанием memtest.
  11. Раскомментируйте последнюю строку (удалите специальный символ в начале строки, например «#», «>» или «!»). Это делает его активным (например, «# GRUB_BADRAM =» становится «GRUB_BADRAM =».).
  12. Замените примеры адресов (после «GRUB_BADRAM =») выводом «badram =», который вы скопировали из Memtest86 + (например, «0x98f548a0,0xfffffffc»).
  13. Сохраните (или «запишите») свои изменения.
  14. В терминале (командной строке) обновите файл «grub.cfg», набрав «sudo update-grub».
  15. Перезагрузка.