Что такое ecc. Что такое ECC RAM? Буферизированная оперативная память — что это? Что такое ECC-память

Вопросы

Какие ограничения по объему памяти накладывают современные операционные системы семейства Windows?

Устаревшие, но кое-где еще встречающиеся, операционные системы Windows 9x/ME умеют работать только с 512 Мб памяти. И хотя конфигурации с большим объемом для них вполне возможны, проблем при этом возникает гораздо больше, чем пользы. Современные 32-разрядные версии Windows 2000/2003/XP и Vista теоретически поддерживают до 4 Гб памяти, но реально доступно для приложений не более 2 Гб. За небольшим исключением - ОС начального уровня Windows XP Starter Edition и Windows Vista Starter способны работать не более чем с 256 Мб и 1 Гб памяти соответственно. Максимальный поддерживаемый объем 64-разрядной Windows Vista зависит от ее версии и составляет:

  • Home Basic - 8 Гб;
  • Home Premium - 16 Гб;
  • Ultimate - Более 128 Гб;
  • Business - Более 128 Гб;
  • Enterprise - Более 128 Гб.

Что такое память DDR SDRAM?

Память типа DDR (Double Data Rate - удвоенная скорость передачи данных) обеспечивает передачу данных по шине "память-чипсет" дважды за такт, по обоим фронтам тактирующего сигнала. Таким образом, при работе системной шины и памяти на одной и той же тактовой частоте, пропускная способность шины памяти оказывается вдвое больше, чем у обычной SDRAM.

В обозначении модулей памяти DDR обычно используются два параметра: или рабочую частоту (равную удвоенному значению тактовой частоты) - например, тактовая частота памяти DR-400 равна 200 МГц; или пиковую пропускную способность (в Мб/с). У той же самой DR-400 пропускная способность приблизительно равна 3200 Мб/с, поэтому она может обозначаться как РС3200. В настоящее время память DDR потеряла свою актуальность и в новых системах практически полностью вытеснена более современной DDR2. тем не менее, для поддержания "на плаву" большого количества старых компьютеров, в которые установлена память DDR, выпуск ее все еще продолжается. Наиболее распространены 184-контактные модули DDR стандартов PC3200 и, в меньшей мере, PC2700. DDR SDRAM может иметь Registered и ECC варианты.

Что такое память DDR2?

Память DDR2 является наследницей DDR и в настоящее время является доминирующим типом памяти для настольных компьютеров, серверов и рабочих станций. DDR2 рассчитана на работу на более высоких частотах, чем DDR, характеризуется меньшим энергопотреблением, а также набором новых функций (предвыборка 4 бита за такт, встроенная терминация). Кроме того, в отличие от чипов DDR, которые выпускались как в корпусах типа TSOP, так и FBGA, чипы DDR2 выпускаются только в корпусах FBGA (что обеспечивает им большую стабильность работы на высоких частотах). Модули память DDR и DDR2 не совместимы друг с другом не только электрически, но и механически: для DDR2 используются 240-контактные планки, тогда как для DDR - 184-контактные. Сегодня наиболее распространена память, работающая на частоте 333 МГц и 400 МГц, и обозначаемая как DDR2-667 (РС2-5400/5300) и DDR2-800 (РС2-6400) соответственно.

Что такое память DDR3?

Ответ: Память стандарта DDR третьего поколения - DDR3 SDRAM в скором времени должна заменить нынешнюю DDR2. Производительность новой памяти удвоилась по сравнению с предыдущей: теперь каждая операция чтения или записи означает доступ к восьми группам данных DDR3 DRAM, которые, в свою очередь, с помощью двух различных опорных генераторов мультиплексируются по контактам I/O с частотой, в четыре раза превышающей тактовую частоту. Теоретически эффективные частоты DDR3 будут располагаться в диапазоне 800 МГц - 1600 МГц (при тактовых частотах 400 МГц - 800 МГц), таким образом, маркировка DDR3 в зависимости от скорости будет: DDR3-800, DDR3-1066, DDR3-1333, DDR3-1600. Среди основных преимуществ нового стандарта, прежде всего, стоит отметить существенно меньшее энергопотребление (напряжение питания DDR3 - 1,5 В, DDR2 - 1,8 В, DDR - 2,5 В).

Что такое SLI-Ready-память?

Ответ: SLI-Ready-память, иначе - память с EPP (Enhanced Performance Profiles - профили для увеличения производительности), создана силами маркетинговых отделов компаний NVIDIA и Corsair. Профили EPP, в которых, помимо стандартных таймингов памяти, "прописываются" еще и значение оптимального напряжения питания модулей, а также некоторые дополнительные параметры, записываются в микросхему SPD модуля.

Благодаря профилям EPP уменьшается трудоемкость самостоятельной оптимизации работы подсистемы памяти, хотя существенного влияния на производительность системы "дополнительные" тайминги не оказывают. Так что какого-либо значительного выигрыша от использования SLI-Ready-памяти, по сравнению с обычной памятью, оптимизированной вручную, нет.

Что такое ECC-память?

ECC (Error Correct Code - выявление и исправление ошибок) служит для исправления случайных ошибок памяти, вызываемых различными внешними факторами, и представляет собой усовершенствованный вариант системы "контроля четности". Физически ECC реализуется в виде дополнительной 8-разрядной микросхемы памяти, установленной рядом с основными. Таким образом, модули с ECC являются 72- разрядным (в отличие от стандартных 64-разрядых модулей). Некоторые типы памяти (Registered, Full Buffered) выпускаются только в ECC варианте.

Что такое Registered-память?

Registered (регистровые) модули памяти применяются в основном в серверах, работающих с большими объемами оперативной памяти. Все они имеют ЕСС, т.е. являются 72-битными и, кроме того, содержат дополнительные микросхемы регистров для частичной (или полной - такие модули называются Full Buffered, или FB-DIMM) буферизации данных, за счет чего уменьшается нагрузка на контроллер памяти. Буферизованные DIMM, как правило, несовместимы с не буферизованными.

Можно ли вместо обычной памяти использовать Registered и наоборот?

Несмотря на физическую совместимость разъемов, обычная не буферизованная память и Registered-память не совместимы друг с другом и, соответственно, использование Registered-памяти вместо обычной и наоборот невозможно.

Что такое SPD?

На любом модуле памяти DIMM присутствует небольшой чип SPD (Serial Presence Detect), в котором производителем записывается информация о рабочих частотах и соответствующих задержках чипов памяти, необходимые для обеспечения нормальной работы модуля. Информация из SPD считывается BIOS на этапе самотестирования компьютера еще до загрузки операционной системы и позволяет автоматически оптимизировать параметры доступа к памяти.

Могут ли совместно работать модули памяти разного частотного номинала?

Принципиальных ограничений на работу модулей памяти разного частотного номинала нет. В этом случае (при автоматической настройки памяти по данным из SPD) скорость работы всей подсистемы памяти будет определяться скоростью наиболее медленного модуля.

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

Сколько и какие модули памяти надо установить в системную плату, что бы память заработала в двухканальном режиме?

В общем случае для организации работы памяти в двухканальном режиме необходима установка четного числа модулей памяти (2 или 4), причем в парах модули должны быть одинакового объема, и, желательно (хотя и не обязательно) - из одной и той же партии (или, на худой конец, одного и того же производителя). В современных системных платах слоты памяти разных каналов маркируются различными цветами.

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

На память каких производителей стоит обратить внимание в первую очередь?

Можно отметить нескольких производителей памяти, достойно зарекомендовавших себя на нашем рынке. Это будут, например, брэнд-модули OCZ, Kingston, Corsair, Patriot, Samsung, Transcend.

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

Страница 1 из 10

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

Перед прочтением данного материала рекомендуем ознакомится с материалами по и платформе LGA1151 .

Теория

Перед тестированием расскажем об ошибках памяти.
Ошибки, возникающие в памяти, можно разделить на два типа – аппаратные и случайные. Причиной появления первых являются дефектные микросхемы DRAM. Вторые же возникают по причине воздействия электромагнитных помех, излучения, альфа- и элементарных частиц и т.д. Соответственно, исправить аппаратные ошибки можно только путем замены микросхем DRAM, а случайные – с помощью специальных технологий, например, ECC (Error-Correcting Code). Коррекция ошибок ECC в своем арсенале имеет два метода: SEC (Single Error Correction) и DED (Double Error Detection). Первый исправляет однобитовые ошибки в 64-битном слове, а второй детектирует двухбитовые ошибки.
Аппаратная реализация ECC заключается в размещении дополнительных чипов памяти, которые необходимы для записи 8-битных контрольных сумм. Таким образом, модуль памяти с коррекцией ошибок при одностороннем дизайне будет иметь 9 чипов памяти вместо 8 (как у стандартного модуля), а при двустороннем - 18 вместо 16. Вместе с этим увеличивается и ширина модуля с 64 до 72 бит.
При считывании данных из памяти происходит повторный подсчет контрольной суммы, которая сравнивается с исходной. Если ошибка в одном бите - она исправляется, если в двух - детектируется.

Практика

В теории всё хорошо – память с коррекцией ошибок повышает надежность системы, что очень важно при построении сервера или рабочей станции. А на практике существует еще и финансовая сторона данного вопроса. Если серверу память с коррекцией ошибок обязательна, то рабочая станция вполне может обойтись без ECC (многие готовые рабочие станции разных производителей оснащаются обычной ОЗУ). Насколько же дороже память с коррекцией ошибок?
Типичный модуль DDR4-2133 с объемом 8 ГБ стоит порядка 39 долларов, а модуль с ECC – 48 долларов (на момент написания материала). Разница в стоимости составляет около 23%, что весьма значительно на первый взгляд. Но если посмотреть на общую стоимость рабочей станции, то эта разница не превысит и 5% от нее. Таким образом, приобретение памяти с ECC лишь незначительно увеличивает стоимость рабочей станции. Остается лишь вопрос – а как влияет память с ECC на производительность процессора.
Для того, чтобы ответить на этот вопрос редакция сайт взяла для тестирования модули памяти Samsung DDR4-2133 ECC и Kingston DDR4-2133 с одинаковыми таймингами 15-15-15-36 и объемом 8 ГБ.

На модулях памяти Samsung M391A1G43DB0-CPB с коррекцией ошибок распаяно по 9 чипов с каждой стороны.

В то время как на обычных модулях памяти Kingston KVR21N15D8/8 распаяно по 8 чипов с каждой стороны.

Тестовый стенд: Intel Xeon E3-1275v5, Supermicro X11SAE-F, Samsung DDR4-2133 ECC 8GB, Kingston DDR4-2133 non-ECC 8GB

Детализация

Процессор: (HT on; TB off);
- Материнская плата: ;
- Оперативная память: 2x (M391A1G43DB0-CPB), 2x (KVR21N15D8/8);
- ОС: .

Методика тестирования

3DMark06 1.21;
- 7zip 15.14;
- AIDA64 5.60;
- Cinebench R15;
- Fritz 4.2;
- Geekbench 3.4.1;
- LuxMark v3.1;
- MaxxMEMI 1.99;
- PassMark v8;
- RealBench v2.43;
- SiSoftware Sandra 2016;
- SVPmark v3.0.3b;
- TrueCrypt 7.1a;
- WinRAR 5.30;
- wPrime 2.10;
- x264 v5.0.1;
- x265 v0.1.4;
- Kraken;
- Octane;
- Octane 2.0;
- Peacekeeper;
- SunSpider;
- WebXPRT.

ECC (Error Correct Code - выявление и исправление ошибок) служит для исправления случайных ошибок памяти, вызываемых различными внешними факторами, и представляет собой усовершенствованный вариант системы «контроля четности».

Физически ECC реализуется в виде дополнительной 8-разрядной микросхемы памяти, установленной рядом с основными.

Таким образом, модули с ECC являются 72- разрядным (в отличие от стандартных 64-разрядых модулей).

Некоторые типы памяти (Registered, Full Buffered) выпускаются только в ECC варианте.

Драйвер AMD Radeon Software Adrenalin Edition 19.9.2 Optional

Новая версия драйвера AMD Radeon Software Adrenalin Edition 19.9.2 Optional повышает производительность в игре «Borderlands 3» и добавляет поддержку технологии коррекции изображения Radeon Image Sharpening.

Накопительное обновление Windows 10 1903 KB4515384 (добавлено)

10 сентября 2019 г. Microsoft выпустила накопительное обновление для Windows 10 версии 1903 - KB4515384 с рядом улучшений безопасности и исправлением ошибки, которая нарушила работу Windows Search и вызвала высокую загрузку ЦП.

Драйвер Game Ready GeForce 436.30 WHQL

Компания NVIDIA выпустила пакет драйверов Game Ready GeForce 436.30 WHQL, который предназначен для оптимизации в играх: «Gears 5», «Borderlands 3» и «Call of Duty: Modern Warfare», «FIFA 20», «The Surge 2» и «Code Vein», исправляет ряд ошибок, замеченных в предыдущих релизах, и расширяет перечень дисплеев категории G-Sync Compatible.

Драйвер AMD Radeon Software Adrenalin 19.9.1 Edition

Первый сентябрьский выпуск графических драйверов AMD Radeon Software Adrenalin 19.9.1 Edition оптимизирован для игры Gears 5.

Очень часто при выборе комплектующих мы сталкиваемся с различными непонятными терминами и понятиями. При выборе оперативной памяти это может быть DDR, DDR2, DDR3, DDR4, RDRAM, RIMM и т.п. Если с основными типами ОЗУ всё более-менее понятно, а поддержка каждого типа указана в описании к материнской плате, то такой параметр, как ECC у многих вызывает некоторые вопросы. Что такое ECC-память? Можно ли использовать ECC оперативку на домашнем компьютере и в чём главное отличие ECC RAM и non-ECC RAM?

Что такое ECC-память?

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

ECC-Ram автоматически распознаёт спонтанные изменения данных в блоках хранения, то есть возникшие ошибки. Обычная — десктопная память без поддержки механизмов коррекции называется non-ECC.

На что способна ECC-память и как это работает?

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

Алгоритм исправления ошибок основан на коде Хэмминга, но для исправления более одной ошибки применяются прочие алгоритмы. На практике используются модули памяти, где для каждых 8 микросхем памяти добавляется ещё по одной микросхеме, хранящей ECC-коды (8 бит на каждые 64 бита основной памяти).

Почему искажается значение в ячейках памяти RAM?

Одна из основных причин искажения данных — космические лучи. Хотя мы находимся на Земле под защитой атмосферы, космические лучи несут с собой некие элементарные частицы, способные влиять на электронику, в том числе, на компьютерную память. Под действием энергии этих частиц возможно изменение состояния ячейки памяти, что ведёт к искажению данных и возникновению ошибок. Интересно, что воздействие космических лучей увеличивается с ростом высоты, поэтому компьютерные системы, находящиеся на большой высоте требуют лучшей защиты.

Как работает память с поддержкой ECC

Один из механизмов контроля ошибок в оперативной памяти — использовать технологию контроля чётности, что позволяет фиксировать факт возникновения ошибки в данных, но не позволяет скорректировать данные.

Для ECC коррекции используется код Хэмминга. ECC защищает компьютерные системы от некорректной работы в связи с порчей памяти и снижает вероятность критического отказа системы. Память с поддержкой ECC работает на 2-3 % медленнее чем non-ECC в зависимости от приложений.

Причины использовать ЕСС-память

Объективных причин использовать оперативную память с поддержкой ECC в настольных компьютерах нет. Так как вероятность возникновения ошибок данных крайне мала, то в обычных сценариях использования ПК крайне маловероятно, что возникновение ошибки приведёт к возникновению проблем или критических сбоев в работе ПК. Самый страшный сценарий — появление синего экрана смерти BSOD. Кроме того, использование ECC-ОЗУ затруднено тем, что настольные процессоры и материнские платы в своём большинстве не поддерживают данный тип оперативной памяти.

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

Как Вам? -

Как я понимаю, его доводы такие:

  1. В Google не использовали ECC, когда собирали свои серверы в 1999 году.
  2. Большинство ошибок ОЗУ - это ошибки систематические, а не случайные.
  3. Ошибки ОЗУ возникают редко, потому что аппаратное обеспечение улучшилось.
  4. Если бы память ECC имела на самом деле важное значение, то она использовались бы везде, а не только в серверах. Плата за такого рода опциональный материал явно слишком сомнительна.
Давайте рассмотрим эти аргументы один за другим:

1. В Google не использовали ECC в 1999 году

Если вы делаете нечто только из-за того, что когда-то это сделал Google, то попробуйте:

A. Поместите свои серверы в транспортные контейнеры.

Сегодня все ещё пишут статьи о том, что это - отличная идея, хотя Google всего лишь провёл эксперимент, который был расценен как неудачный. Оказывается, даже эксперименты Google не всегда удаются. Фактически, их известное пристрастие к «прорывным проектам» («луншоты») означает, что у них имеется больше неудачных экспериментов, чем у большинства компаний. По-моему, для них это существенное конкурентное преимущество. Не стоит делать это преимущество больше, чем оно есть, слепо копируя провалившиеся эксперименты.

B. Вызывайте пожары в своих собственных центрах обработки данных.

Часть поста Этвуда обсуждает, насколько удивительными были эти серверы:

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

Последняя часть высказанного - это правда. Но и в первой части есть доля правды. Когда Google начал разрабатывать свои собственные платы, одно их поколение имело проблему «роста» ( ), вызвавшую ненулевое число возгораний.

Кстати, если вы перейдёте к посту Джеффа и посмотрите на фотографию, на которую ссылается цитата, то вы увидите, что на платах много кабелей-перемычек. Это вызывало проблемы и было исправлено в следующем поколении оборудования. Также можно видеть довольно неряшливо выполненную кабельную разводку, что дополнительно вызывало проблемы и что также было быстро устранено. Были и другие проблемы, но я оставлю их в качестве упражнения для читателя.

C. Создавайте серверы, которые травмируют ваших сотрудников

Острые грани одного из поколений серверов Google заработали им репутацию сделанных из «бритвенных лезвий и ненависти».

D. Создавайте свою погоду в ваших центрах обработки данных

После разговоров с сотрудниками многих крупных технологических компаний создаётся впечатление, что в большинстве компаний был такой климат-контроль, что в их центрах обработки данных образовывались облака или туман. Можно было бы назвать это расчётливым и коварным планом Google по воспроизведению сиэтловской погоды, чтобы переманивать сотрудников Microsoft. Как вариант, это мог быть план создания в буквальном смысле «облачных вычислений». А может и нет.

Обратите внимание, что всё указанное Google попробовал, а затем изменил. Делать ошибки, а затем устранять их - распространённое явление в любой организации, успешно занимающейся разработками. Если вы боготворите инженерную практику, то следует держаться, по крайней мере, за современную практику, а не за сделанное в 1999 году .

Когда Google использовал серверы без ECC в 1999 году, на них проявился ряд симптомов, которые, как в конце концов выяснилось, были вызваны повреждением памяти. В том числе индекс поиска, который возвращал фактически случайные результаты в запросы. Реальный режим сбоя здесь поучителен. Я часто слышу, что на этих машинах можно игнорировать ECC, потому что ошибки в отдельных результатах являются допустимыми. Но даже если вы считаете для себя случайные ошибки допустимыми, их игнорирование означает, что существует опасность полного повреждения данных, если только не проводить тщательный анализ с целью убедиться, что одна ошибка может лишь незначительно исказить один результат.

В исследованиях, проведённых на файловых системах, неоднократно было показано, что, несмотря на героические попытки создания систем, устойчивых к одной ошибке, сделать это крайне сложно. По существу, каждая сильно тестируемая файловая система может иметь серьёзный сбой из-за единственной ошибки (). Я не собираюсь нападать на разработчиков файловых систем. Они лучше разбираются в таком анализе, чем 99,9% программистов. Просто неоднократно уже было показано, что эта проблема настолько трудная, что люди не могут достаточно обоснованно обсуждать её, и автоматизированное инструментальное средство для такого анализа ещё далеко от процесса простого нажатия кнопки. В своём справочнике по компьютерной обработке складских данных Google обсуждает обнаружение и исправление ошибок, и память ECC рассматривается как самый правильный вариант, когда очевидно, что необходимо использовать исправление ошибок аппаратного обеспечения ( ).

Google имеет отличную инфраструктуру. Из того, что я слышал об инфраструктуре в других крупных инфотехнологических компаниях, Google представляется лучшим в мире. Но это не значит, что следует копировать всё, что они делают. Даже если рассматривать только их хорошие идеи, для большинства компаний нет смысла копировать их. Они создали замену планировщику перехвата работ Linux, который использует как аппаратную информацию времени выполнения, так и статические трассировки, чтобы позволить им использовать преимущества нового оборудования в серверных процессорах Intel, что позволяет динамически разбивать кэш между ядрами . Если использовать это на всём их оборудовании, то Google сэкономит за неделю больше денег, чем компания Stack Exchange потратила на все свои машины за всю свою историю. Означает ли это, что вы должны скопировать Google? Нет, если на вас уже не свалилась манна небесная, например, в виде того, что ваша основная инфраструктура написана на высокооптимизированном C++, а не на Java или (не дай бог) Ruby. И дело в том, что для подавляющего большинства компаний написание программ на языке, который влечёт 20-кратное снижение производительности, - совершенно разумное решение.

2. Большинство ошибок ОЗУ - это систематические ошибки

Аргументация против ECC воспроизводит следующий раздел исследования ошибок DRAM (выделение дано Джеффом):
Наше исследование имеет несколько основных результатов. Во-первых, мы обнаружили, что приблизительно 70% сбоев DRAM является повторяющимися (например, постоянными) сбоями, тогда как только 30% является неустойчивыми (перемежающимися) сбоями . Во-вторых, мы обнаружили, что большие многобитовые сбои, такие как сбои, которые затрагивают всю строку, столбец или блок, составляют более 40% всех сбоев DRAM. В-третьих, мы обнаружили, что почти 5% отказов DRAM влияют на схемы на уровне платы, такие как линии данных (DQ) или стробирования (DQS). Наконец, мы обнаружили, что функция Chipkill уменьшила частоту отказов системы, вызываемих сбоями DRAM, в 36 раз.

Цитата кажется несколько ироничной, поскольку она выглядит не аргументом против ECC, а аргументом за Chipkill - определённый класс ECC. Отложив это в сторону, пост Джеффа указывает, что систематические ошибки встречаются в два раза чаще, чем ошибки случайные. Затем пост сообщает, что они запускают memtest на своих машинах, когда происходят систематические ошибки.

Во-первых, соотношение 2:1 не столь велико, чтобы просто игнорировать случайные ошибки. Во-вторых, пост подразумевает веру Джеффа, что систематические ошибки, по существу, неизменны и не могут проявиться через некоторое время. Это неверно. Электроника изнашивается точно так же, как изнашиваются механические устройства. Механизмы разные, но эффекты схожи. Действительно, если сравнить анализ надёжности чипов с другими видами анализа надёжности, то можно видеть, что они часто используют одни и те же семейства распределений для моделирования отказов. В-третьих, ход рассуждений Джеффа подразумевает, что ECC не может помочь в обнаружении или исправлении ошибок, что не только неверно, но и прямо противоречит цитате.

Итак, как часто вы собираетесь запускать memtest на своих машинах в попытках поймать эти системные ошибки и сколько потерь данных вы готовы пережить? Одно из ключевых применений ECC состоит не в том, чтобы исправить ошибки, а в том, чтобы сигнализировать об ошибках, благодаря чему оборудование может быть заменено до того, как произойдёт «silent corruption» («скрытое повреждение данных»). Кто согласится закрывать всё на машине каждый день, чтобы запустить memtest? Это было бы намного дороже, чем просто купить ECC-память. И даже если бы вы смогли убедить гонять тестирование памяти, memtest не обнаружил бы столько ошибок, сколько сможет найти ECC.

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

Если вы просто пытаетесь защитить себя с помощью контрольных сумм в памяти, есть немалая вероятность того, что вы выполните операцию вычисления контрольной суммы на уже повреждённых данных и получите правильную контрольную сумму неправильных данных, если только вы не делаете некоторые действительно необычные операции с вычислениями, которые дают их собственные контрольные суммы. А если вы серьёзно относитесь к исправлению ошибок, то вы, вероятно, всё же используете ECC.

Во всяком случае, после завершения анализа мы обнаружили, что memtest не мог обнаружить какие-либо проблемы, но замена ОЗУ на плохих машинах привела к уменьшению частоты ошибок на один-два порядка. У большинства сервисов нет такого рода контрольных сумм, которые были у нас; эти сервисы будут просто молча записывать повреждённые данные в постоянное хранилище и не увидят проблему, пока клиент не начнёт жаловаться.

3. Благодаря развитию аппаратного обеспечения ошибки стали очень редкими

Данных в посте недостаточно для такого утверждения. Обратите внимание, что поскольку использование ОЗУ возрастает и продолжает увеличиваться экспоненциально, отказы ОЗУ должны уменьшаться с большей экспоненциальной скоростью, чтобы фактически уменьшить частоту повреждения данных. Кроме того, поскольку чипы продолжают уменьшаться, элементы становятся меньше, что делает более актуальными проблемы износа, обсуждаемые во втором пункте. Например, при технологии 20 нм конденсатор DRAM может накпливать где-то электронов 50, и это число будет меньше для следующего поколения DRAM при сохранении тенденции уменьшения.

Ещё одно замечание: когда вы платите за ECC, вы платите не просто за память ECC - вы платите за детали (процессоры, платы), которые являются более качественными. Такое легко можно видеть с частотой отказа дисков, и я слышал, что многие замечают такое в своих личных наблюдениях.

Если приводить общедоступные исследования: насколько помню, группа Андреа и Ремзи несколько лет назад выпустила документ SIGMETRICS, который показал, что вероятность сбоя при чтении у диска SATA в 4 раза выше, чем у диска SCSI, а вероятность скрытого повреждения данных - в 10 раз выше. Это соотношение сохранялось даже при использовании дисков одного изготовителя. Нет особой причины думать, что интерфейс SCSI должен быть более надёжным, чем интерфейс SATA, но речь идёт не об интерфейсе. Речь идёт о покупке высоконадёжных серверных компонентов по сравнению с клиентскими. Возможно, конкретно надёжность диска вас не интересует, потому что у вас всё на контрольных суммах, и повреждения легко находятся, но есть некоторые виды нарушений, которые обнаружить труднее.

4. Если бы память ECC имела, действительно, важное значение, то её использовали бы везде, а не только в серверах.

Немного перефразируя этот аргумент, можно сказать, что «если бы эта характеристика была, действительно, важна для серверов, то она использовалась бы и в не-серверах». Можно применить этот аргумент к довольно большому количеству аппаратных средств сервера. На самом деле это одна из наиболее неприятных проблем, стоящих перед крупными поставщиками облачных решений.

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

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

Усилия Qualcomm получили много шума, но, когда я общаюсь с моими контактами в Qualcomm, они все говорят мне, что сделанный в данный момент чип предназначен, по существу, для пробы. Так получилось, потому что компании Qualcomm нужно было узнать, как сделать серверный чип, у всех тех специалистов, которых она переманила из IBM, и что следующий чип будет первым, который, можно надеяться, станет конкурентоспособным. Я возлагаю большие надежды на Qualcomm, а также на усилия ARM по созданию хороших серверных компонентов, но эти усилия пока не дают желаемого результата.

Почти полная непригодность текущих вариантов ARM (и POWER) (не считая гипотетических вариантов впечатляющего чипа ARM от Apple) для большинства рабочих нагрузок серверов с точки зрения производительности на доллар совокупной стоимости владения (TCO) - эта тема немного в стороне, поэтому я оставлю её для другой публикации. Но дело в том, что Intel имеет такую позицию на рынке, что может заставить людей платить сверху за серверные функции. И Intel это делает. Кроме того, некоторые функции действительно важнее для серверов, чем для мобильных устройств с несколькими гигабайтами оперативной памяти и энергетическим бюджетом в несколько ватт, мобильных устройств, от которых всё равно ожидают периодические вылеты и перезагрузки.

Заключение

Следует ли покупать ECC-ОЗУ? Это зависит от многого. Для серверов это, вероятно, хороший вариант, учитывая затраты. Хотя на самом деле трудно провести анализ затрат/выгод, потому что довольно сложно определить ущерб от скрытого повреждения данных или затраты на риск потерять полгода времени разработчика на отслеживание перемежающихся сбоев, только чтобы обнаружить, что они вызваны использованием памяти без ECC.

Для настольных компьютеров я тоже сторонник ECC. Но если вы не делаете регулярные бэкапы , то вам полезнее вложиться в регулярные бэкапы, чем в ECC-память. И если у вас есть резервные копии без ECC, то вы можете легко записать повреждённые данные в основное хранилище и реплицировать эти повреждённые данные в резервную копию.

Спасибо Прабхакару Рагде, Тому Мерфи, Джею Вайскопфу, Лии Хансон, Джо Уайлдеру и Ральфу Кордерою за обсуждение / комментарии / исправления. Кроме того, спасибо (или, может быть, не-спасибо) Лии за то, что убедила меня написать этот устный экспромт как пост в блоге. Приносим извинения за любые ошибки, отсутствие ссылок и возвышенную прозу; это, по существу, запись половины обсуждения, и я не объяснил условия, не предоставил ссылки или не проверил факты на том уровне детализации, как я обычно делаю.

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

Давным давно жил да был производитель полупроводниковых устройств, который немного поторописля со своим производственным процессом и несколько чрезмерно уменьшил допуски в некотором технологическом поколении. Через несколько месяцев (или лет) соединение между двумя концами подобной перемычки смогло снова появиться и восстановить его. Если вам повезёт, то такая перемычка будет чем-то вроде старшего бита множителя тактовой частоты, который в случае его изменения будет выводить чип из строя. Если не повезёт, то это приведёт к скрытому повреждению данных.

Я слышал от многих людей в разных компаниях о проблемах в этом технологическом поколении этого производителя, так что это не были отдельные случаи. Когда я говорю, что это забавно, я имею в виду, что забавно услышать эту историю в баре. Менее забавно обнаружить через год тестирования, что некоторые из ваших чипов не работают, потому что их установки для перемычек бессмысленны, и необходимо переделать ваш чип и отложить выпуск на 3 месяца. Кстати, эта ситуация с восстановлением плавкой перемычки - ещё один пример класса ошибок, остроту которых можно сгладить с помощью ECC.

Это не проблема Google; я упоминаю об этом только потому, что многие люди, с которыми я общаюсь, удивлены тем, каким образом аппаратное обеспечение может выйти из строя.

Если вы не хотите копаться во всей книге, то вот нужный фрагмент:

В системе, которая может выдержать ряд отказов на программном уровне, минимальное требование, предъявляемое к аппаратной части, заключается в том, что сбои этой части всегда обнаруживаются и сообщаются программному обеспечению достаточно своевременно, чтобы позволить программной инфраструктуре ограничить их и принять соответствующие действия по восстановлению. Необязательно, чтобы аппаратное обеспечение явно справлялось со всеми сбоями. Это не означает, что оборудование для таких систем должно быть спроектировано без возможности исправления ошибок. Всякий раз, когда функциональные возможности исправления ошибок могут быть предложены с разумной ценой или сложностью, поддержка их часто окупается. Это означает, что, если аппаратная коррекция ошибок была бы чрезвычайно дорогостоящей, то система могла бы иметь возможность использования более дешёвой версии, которая предоставляла бы возможности только обнаружения. Современные системы DRAM являются хорошим примером ситуации, в которой мощная коррекция ошибок может быть предоставлена при очень низких дополнительных затратах. Однако смягчение требования об обнаружении аппаратных ошибок было бы намного сложнее, поскольку это означало бы, что каждый программный компонент был бы обременён необходимостью проверки его собственного правильного выполнения. На начальном этапе своей истории Google пришлось иметь дело с серверами, на которых у DRAM отсутствовал даже контроль чётности. Создание индекса веб-поиска состоит, по существу, из очень большой операции сортировки/слияния, использующей длительно несколько машин. В 2000 году одно из ежемесячных обновлений веб-индекса Google не прошло предварительную проверку, когда обнаружилось, что некоторое подмножество проверенных запросов возвращает документы, по-видимому, случайным образом. После некоторого исследования в новых индексных файлах была выявлена ситуация, которая соответствовала фиксации бита на нуле в определённом месте в структурах данных, что было негативным побочным эффектом потоковой передачи большого количества данных через неисправный чип DRAM. В структуры данных индекса были добавлены проверки непротиворечивости, чтобы свести к минимуму вероятность повторения этой проблемы, и в дальнейшем проблем такого характера не было. Однако следует отметить, что этот способ не гарантирует 100% обнаружения ошибок в проходе индексации, так как не все позиции памяти проверяются - инструкции, например, остаются без проверки. Это сработало потому, что структуры данных индекса были настолько больше, чем все другие данные, участвующие в вычислении, что наличие этих самоконтролируемых структур данных делало очень вероятным, что машины с дефектным DRAM будут идентифицированы и исключены из кластера. Следующее поколение машин в Google уже содержало обнаружение чётности в памяти, и как только цена памяти с ECC опустилась до конкурентного уровня, все последующие поколения использовали ECC-DRAM.

Теги: Добавить метки

error: Content is protected !!