Ошибка в одном бите памяти проявляется непредсказуемо: сегфолт в случайном процессе, повреждённый файл, зависание без записи в журнал. Отличить от программной проблемы можно только тестом.
Когда подозревать память
- Падения разных программ без общей закономерности
- Синий экран с кодом
MEMORY_MANAGEMENTилиPAGE_FAULT_IN_NONPAGED_AREA - Ошибки контрольных сумм при распаковке архивов
- Kernel panic без явной причины в журнале
- Система нестабильна сразу после добавления модулей памяти
Шаг 1: что установлено
sudo dmidecode -t memory | grep -E "Size|Speed|Manufacturer|Part Number|Locator"
Компактная сводка:
sudo lshw -short -C memory
Windows:
Get-CimInstance Win32_PhysicalMemory |
Select-Object BankLabel, DeviceLocator, Capacity, Speed, Manufacturer, PartNumber |
Format-Table -AutoSize
Шаг 2: проверка ECC-ошибок
Если память серверная с коррекцией ошибок, она сама сообщает о проблемах:
sudo apt install -y edac-utils
sudo edac-util -v
Ошибки в журнале ядра:
sudo journalctl -k | grep -iE "edac|machine check|mce|correctable"
Различайте типы: Corrected Error — ошибка была исправлена, но модуль деградирует. Uncorrected Error — исправить не удалось, данные повреждены.
Совет. На сервере с ECC единичные исправленные ошибки за месяцы работы — норма, вызванная космическим излучением. Десятки в сутки на одном модуле — повод его заменить.
Шаг 3: тест без перезагрузки
Утилита memtester проверяет память, доступную для выделения — систему останавливать не нужно:
sudo apt install -y memtester
sudo memtester 2G 3
Здесь 2G — объём для проверки, 3 — число проходов.
Предупреждение. memtester не проверяет память, занятую ядром и работающими процессами. Он находит грубые дефекты, но чистый результат не гарантирует исправности. Полная проверка требует загрузки вне операционной системы.
Шаг 4: memtest86+
Полноценный тест загружается до операционной системы и проверяет всю память.
sudo apt install -y memtest86+
После установки утилита появится в меню GRUB. Перезагрузитесь и выберите её. Для серверов без консоли используйте IPMI или KVM провайдера.
Что смотреть: столбец Errors должен оставаться нулевым. Минимум — один полный проход, для надёжности — ночь работы.
Шаг 5: Windows
Встроенное средство:
mdsched.exe
Результат после перезагрузки:
Get-WinEvent -FilterHashtable @{ LogName='System'; ProviderName='Microsoft-Windows-MemoryDiagnostics-Results' } -MaxEvents 5 |
Select-Object TimeCreated, Message | Format-List
Анализ дампов синего экрана:
Get-ChildItem C:\Windows\Minidump\*.dmp | Select-Object Name, LastWriteTime
Шаг 6: найти конкретный модуль
Тест показал ошибки — нужно определить виновника:
- Выключите машину, оставьте один модуль
- Прогоните memtest86+ хотя бы один проход
- Чисто — меняйте на следующий модуль в том же слоте
- Когда найдёте сбойный, проверьте его в другом слоте
Если ошибки следуют за модулем — дефект модуля. Если остаются в слоте с любым модулем — проблема в материнской плате или процессоре.
Совет. Перед заменой попробуйте переустановить модули. Окисление контактов и неплотная посадка дают ту же картину, что и дефект памяти. Протрите контакты и вставьте до щелчка защёлок.
Шаг 7: разгон и тайминги
Память, работающая на профиле XMP или EXPO, может быть нестабильна при исправных модулях. Проверьте текущую частоту:
sudo dmidecode -t memory | grep -E "Configured Memory Speed|Speed"
Если Configured выше стандартной частоты — отключите профиль в BIOS и повторите тест на базовых значениях.
Итог
Порядок: посмотреть конфигурацию через dmidecode → проверить журнал на ECC-ошибки → быстрый memtester → полный memtest86+ при подозрениях → поиск конкретного модуля перестановкой. Перед покупкой новой памяти обязательно попробуйте переустановить имеющуюся и отключить разгон.