Ошибки памяти — не редкость
Масштабное полевое исследование парка серверов Google, опубликованное в 2009 году, показало, что примерно треть машин хотя бы раз в год сталкивалась с исправимой ошибкой памяти, а частота ошибок на порядки превышала лабораторные оценки. Для сервера, который годами работает 24/7, ставка на «со мной такого не случится» — проигрышная.
Что делает ECC
Память ECC хранит вместе с данными дополнительные контрольные биты. Контроллер памяти использует их, чтобы на лету исправлять одиночные битовые ошибки и обнаруживать многобитовые ошибки, а не молча передавать повреждённые данные приложению — или записывать их на диск, где файловая система добросовестно посчитает контрольную сумму уже испорченной версии.
On-die ECC в DDR5 — не то же самое
Каждый чип DDR5 содержит on-die ECC — коррекцию, которая исправляет ошибки внутри самого чипа. Она не защищает данные на пути между модулем и процессором и ничего не сообщает операционной системе. Полноценные модули ECC добавляют дополнительные чипы и более широкую шину, поэтому контроллер памяти может исправлять и регистрировать ошибки на всём пути. Говоря об ECC, мы имеем в виду именно это: ECC UDIMM на Ryzen и регистровые ECC RDIMM на EPYC и Xeon.
Проверьте свой сервер
$ ls /sys/devices/system/edac/mc/
mc0
$ grep . /sys/devices/system/edac/mc/mc*/ce_count
/sys/devices/system/edac/mc/mc0/ce_count:0Если контроллер памяти отображается в EDAC, значит, отчёты об ошибках включены. Растущий ce_count (счётчик исправленных ошибок) на одном модуле — ранний сигнал: откройте тикет, и мы заменим модуль, пока он не стал проблемой.
Источники
- B. Schroeder, E. Pinheiro, W.-D. Weber, «DRAM Errors in the Wild: A Large-Scale Field Study», ACM SIGMETRICS 2009 (англ.)






