Почему я вижу ноль ошибок в не-ECC RAM?

1666
Alexander Shcheblikin

Согласно источникам, ошибки памяти - очень вероятное событие:

  • Некоторые говорят, что вероятность ошибки DRAM составляет 95% всего за 3 дня работы компьютера с 4 ГБ ОЗУ,
  • другие говорят, что 32% серверов испытывают, по крайней мере, одну ошибку в месяц, при этом 8% модулей DIMM ошибаются.

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

Признаюсь, я никогда не обращал особого внимания на эту тему. Тем не менее, я несколько раз отваживался на многочасовые memtest86пробежки и никогда не видел ошибки.

Некоторые из факторов, которые IMO должен усугубить проблемы с памятью:

  • Я строю свои компьютеры из самых «массовых» частей: материнских плат основного бюджета и почти дешевой памяти.
  • Кроме того, я обычно максимально использую доступную технологию, например, во времена 32-битных ОС я использовал 4 ГБ ОЗУ, а с текущими процессорами для настольных ПК и более новыми 64-битными ОС я использую 32 ГБ ОЗУ.
  • Использование памяти умеренно велико, и множество виртуальных машин работают с небольшими и большими задачами 24/7/365.

Но, тем не менее, никаких проблем с памятью не обнаружено!

Как это?

4
Во-первых, если бы в памяти было 95% отказов, индустрия обанкротилась бы, источник, который вы указали, просто неверен Ramhound 10 лет назад 0
@ Бегущий второй ...? Synetech 10 лет назад 2
@ Synetech просто говорит, что если в памяти 95% ошибок, она не будет использоваться. Документу также 4 года, и он рассматривает DDR и DDR2, и поэтому, поскольку он был написан в 2009 году, он в основном неточен, потому что это более или менее 4 десятилетия в технологическом времени, да, технологическое время в 10 раз быстрее обычного времени. Что касается последнего вопроса, то все просто: статья и пост в блоге (шокер) не на 100% точны Ramhound 10 лет назад 0
Откуда ты знаешь, что не видел ошибок памяти? У вас никогда не было сбоев или зависаний, которые вы не смогли объяснить? David Schwartz 10 лет назад 0
@DavidSchwartz, если вы спрашиваете, был ли у меня сбой, я не мог объяснить, что это будет негатив, я стараюсь понять каждый случившийся сбой. Обычно у меня есть общее представление о причине. Ramhound 10 лет назад 0
@Ramhound Тогда кажется, что есть большая вероятность, что вы ошиблись в диагностике некоторых сбоев или зависаний, вызванных ошибками памяти. Или вам просто повезло нелепо, и у вас никогда не было ошибки памяти в жизненно важной области. David Schwartz 10 лет назад 0
@Ramhound, ты сказал * «Сначала…» *, потом больше ничего. Был ли второй пункт? Synetech 10 лет назад 1
Ошибки памяти и сбой памяти - это две разные вещи. Перевернутый или отсутствующий бит здесь или там, в общем, в порядке, в большинстве приложений, где не требуется сверхвысокая точность / точность ... Как в большинстве приложений ... Austin T French 10 лет назад 0

2 ответа на вопрос

7
Synetech

Blerg!

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

Статистика

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

  • космический луч, падающий на Землю
  • луч падает на ваше местоположение
  • луч не мешает и не поглощается ничем другим
  • луч падает на ваш компьютер
  • луч попадает в вашу память
  • луч немного переворачивается в оперативной памяти
  • бит находится в блоке выделенной в данный момент памяти
  • используемая память либо:
    • протестировано программой типа memtest86 +
      • протестировано в нужный момент, чтобы обнаружить ошибку (например, между микросекундами, когда программа записывает память, а затем считывает ее обратно и сравнивает)
    • выделяется блоку исполняемого кода, в этом случае также:
      • измененный бит значительно модифицирует код настолько, чтобы оказать существенное влияние на код
      • резкий эффект вызывает его крах
      • сбой программы на самом деле происходит сбой, а не просто исчезает
      • программа - это то, что вы замечаете и заботитесь о
      • вы не просто отбрасываете его как глючную программу

Конечно, это если мы говорим о переходных, прерывистых ошибках, таких как космические лучи, и помехах от другой электроники. Если модуль ОЗУ действительно неисправен, то в какой-то момент вы почти наверняка столкнетесь с проблемами (хотя даже тогда вполне возможно, что если вы никогда не используете всю физическую ОЗУ в любой момент времени, и дефект окажется небольшим и полностью локализованным). в части, которая никогда не используется вами, тогда вы можете не увидеть ошибку).

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

Примеры

Если измененный бит попадает в часть данных, вы можете даже не заметить этого, потому что он может легко утонуть.

Например, если бит был перевернут в блоке текстовых данных, вы можете заметить, что он The end.превратился в Tje end., но вместо того, чтобы заметить, что hон был заменен на a, jпотому что перевернулся один бит (не стесняйтесь подтвердить, если хотите), вы, скорее всего, просто предполагаете, что ваш палец нажал не ту клавишу, потому что они оказались рядом друг с другом, и просто исправили ошибку.

Хуже того, если перевернутый бит оказался частью изображения, аудио или видео файла, вы можете вообще ничего не заметить. Если он просто оказался в нужном месте, то это может привести к заметному изменению, например, к неправильной ширине или высоте изображения, или к легкому хлопающему звуку в песне, или к небольшому искажению в видео, которое вызывает кратковременную блочность. во время декодирования. Однако, учитывая большой размер медиа-файлов, вероятность того, что один бит окажется в нужном месте, крайне мала. Гораздо более вероятно, что он немного изменит цвет одного пикселя (например, темно-красный на немного темно-красный), и вы, вероятно, никогда не заметите. Это может изменить один пик формы волны песни, так что она имеет немного меньшую амплитуду, и вы, вероятно, никогда не заметите.не мог заметить.

Предостережение

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

Увезти

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

Вы можете использовать такую ​​программу, как memtest, чтобы проверить вашу оперативную память на наличие дефектов. Если это пройдет, то вам нужно только беспокоиться о «шансах один на миллиард» (я оставлю точный расчет кому-то другому, если это необходимо), когда часть важных данных будет повреждена, в противном случае - немного «Бит-гниль» здесь или там, как правило, мало что делает, кроме возможного сбоя программы и заставляет вас ругаться с разработчиками (хотя даже тогда, если он не сделает это снова…)

Хороший вопрос о том, что память должна быть «протестирована в нужный момент, чтобы обнаружить ошибку»! Действительно, `memtest86`, похоже, не тестирует даже умеренно долгосрочные сценарии хранения данных. Alexander Shcheblikin 10 лет назад 0
Это чрезвычайно информативный, хорошо написанный и хорошо отформатированный ответ. sudo 9 лет назад 0
1
Brian

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

  • Память с четностью - обнаружение ошибок
  • Память с ECC - обнаруживать и исправлять ошибки
  • Память ни с чем - ошибки остаются незамеченными

Похожие вопросы