Вопрос: Бад-байт в одном модуле ОЗУ / Блочная область ОЗУ используется


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


5
2017-07-11 06:31


Источник




Ответы:


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

memmap = [сумма] M $ [startlocation] M

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

например.

memmap = 3M $ 217 млн

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


6
2017-10-29 07:22



Действительно приятно найти. Более подробная информация о других параметрах ядра memmap приведена в cyberciti.biz/howto/question/static/linux-kernel-parameters.php - Saurabh Barjatiya
Есть ли способ сделать это для Windows? Или сторонняя программа, похожая на «malloc», на которую вы можете указать область памяти, которую нужно занять? - Mark C
Вам нужно будет использовать его, прежде чем система начнет загружаться, чтобы быть уверенным, что это не сработает. Я не ожидаю, что это будет возможно с окнами, если вы не установите хост linux kvm и не поместите окна на виртуальную машину - naugtur


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

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


3
2017-07-11 08:37



Мне нужно было бы узнать о драйверах устройств Linux и модулях ядра, чтобы я мог обновить патч, чтобы он совместим с сегодняшними ядрами smp. Но спасибо за ссылку. Я знаю, с чего начать. - Saurabh Barjatiya


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


2
2017-07-11 08:03



Если система все еще находится под техническим обслуживанием, обратитесь к поставщику и замените плату. - mrdenny


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

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

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


1
2017-07-11 06:56





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

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


0
2017-07-11 08:11





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


0
2017-07-11 08:19



Я все равно буду рассчитывать на дефект платы / слота, так как замена модулей по-прежнему показывает сродство к слоту. Я не вижу, как дефект ЦП может проявляться таким образом. - nik
Таким образом, это невозможно, вы правы. Но некоторые ошибки памяти связаны с процессором (обычно это дефект кэша). - wazoox


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

  1. Запустите Memtest86 + в выводе «Badram» (желательно с загрузочного внешнего носителя). Когда Memtest86 + запускается, введите:
  2. «C» («конфигурация»), затем
  3. «4» («Режим отчета об ошибках»), затем
  4. «3» («Плохие шаблоны RAM»), затем
  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. Перезагружать.

0
2017-11-22 18:36