Тестирование памяти RAM macOS High Sierra

В macOS 10.13, также известной как High Sierra, Apple представила амбициозное обновление EFI. Некоторые из изменений включают: введение файловой системы Apple, поддержку накопителей NVMe и обычный пакет обновлений безопасности. Однако эти обновления EFI могут вызвать нежелательное поведение при проверке памяти компьютера Apple. В Beetstech мы используем давний отраслевой стандарт MemTest86 для проведения всестороннего тестирования оперативной памяти каждого компьютера.

Но никогда не относился к типу людей, слепо принимающих результаты тестов, странные результаты тестирования привели нас к обнаружению ошибки в MemTest86, влияющей на компьютеры, на которых установлена ​​новая прошивка EFI. Короче говоря, недавно обновленный EFI заставляет MemTest86 некорректно проваливать определенные тесты. Но есть и хорошие новости: хотя нормальная работа MemTest86 ограничена этими новыми обновлениями EFI, мы также обнаружили несколько простых обходных путей для тестирования памяти вашего Apple в MemTest86.

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

MemTest86: программа, обеспечивающая надежное тестирование памяти вашего компьютера.

Чем протестировать память MacBook-MemTest86

MemTest86 – это программа, которая проверяет весь диапазон оперативной памяти компьютерной системы. MemTest86 производится и поддерживается PassMark Software. Программное обеспечение устанавливается на USB-накопитель или компакт-диск. Загрузитесь в устройство, на котором вы установили MemTest86, и программа автоматически запустит тесты.nastroika_memtest86

Настройка MemTest86

MemTest86 может выполнять до четырнадцати различных тестов памяти вашего компьютера. Первые 10 тестов – тесты с номерами от 0 до 9 – просты: каждый тест записывает определенный набор битов в раздел памяти вашего компьютера. Затем тест проходит через этот раздел памяти и считывает значения обратно, чтобы убедиться, что они верны, прежде чем перейти к следующему разделу памяти вашего компьютера и повторять процесс до завершения теста. Тесты № 11 и 12 также демонстрируют это поведение, но больше приспособлены к конкретной архитектуре процессора (например, 64-битные инструкции, 128-битные инструкции SIMD). Особенно нас интересуют тесты № 10 и 13.

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

Тест 13 обычно намного быстрее теста 10. Цель теста 13 – определить, есть ли в ваших модулях памяти дефект, присутствующий в модулях памяти, выпущенных после 2010 года. Этот тест записывает случайную последовательность бит в диапазон адресов памяти и затем повторно считывает два адреса памяти. Это повторяющееся действие чтения может привести к изменению значения некоторых из протестированных адресов памяти, если ваша память неисправна.

Ошибка памяти RAM Apple MacBook

Apple_test

Именно эти два последних теста плохо работают с недавними обновлениями EFI от Apple. Мы обнаружили эту проблему, когда у нас была партия из пяти 13-дюймовых MacBook Air и двух 15-дюймовых MacBook Pro – все из 2015 года, которые одновременно запускали MemTest86. Все MacBook Air работали под управлением MacOS 10.12, один MacBook Pro работал под управлением MacOS 10.13, а другой MacBook Pro работал под управлением OS X 10.11. Два MacBook Air прошли тесты без проблем, в то время как другие три Air и оба Pro потерпели неудачу. Каждый отказавший компьютер выдает не менее 1000 ошибок, и все они возникают за один проход теста 10. Иногда компьютер не проходит тест 10 несколько раз, каждый раз приводя к примерно 1000 ошибок. MacBook Pro также не прошел тест 13, что могло привести к тому, что тест выдал более 100 000 ошибок.

MacBook Pro с OS X 10.11 – это компьютер, которым мы пользуемся почти два года, и в нашей внутренней документации отмечено, что этот конкретный MacBook Pro ранее прошел MemTest86. Мы чувствовали, что тот факт, что пять из этих компьютеров каждый раз выходили из строя одним и тем же образом, не был просто совпадением того, что у этих пяти была плохая память; результаты были слишком впечатляющими. Мы подумали, что может быть проблема и с MemTest86.

Просмотр форумов поддержки MemTest86 показал нам интересный факт о программном обеспечении. Хотя программное обеспечение надежно в своем тестировании, правильность тестов иногда может зависеть от факторов, выходящих за рамки состояния тестируемой памяти. Например, карта памяти, которая тестируется на одном компьютере, может не пройти некоторые тесты, но затем эта же карта может пройти все тесты, когда она будет проверена на другом компьютере. Возможная причина ложных ошибок может быть связана с интерфейсом прошивки компьютерной системы; Примером такого интерфейса прошивки может быть система EFI, присутствующая на последних компьютерах Apple.

Мы знаем, что с выпуском macOS 10.13 появилось важное обновление EFI, которое обеспечивает совместимость с ранее упомянутой файловой системой Apple и NVMe. Мы также знаем, что обновление EFI, которое поставляется с macOS 10.13, является более постоянным, чем установка операционной системы; при регрессе к более старой операционной системе, такой как macOS 10.12, обновление EFI не будет удалено. Когда мы дважды проверили версии EFI на рассматриваемых компьютерах, все вышедшие из строя компьютеры имели версию EFI, которая поставлялась с обновлением macOS 10.13 EFI или вышла после него. Два компьютера, прошедшие тесты, имели версии EFI, выпущенные до обновления macOS 10.13.macOS_bootroom

Версия BootROM, вызывающая проблемы с MemTest86. Их можно идентифицировать с помощью суффикса «B00».

Эксперимент теста памяти MacBook и его результаты

С двумя MacBook Air, успешно прошедшими MemTest86, и нашими подозрениями по поводу обновления EFI, мы решили провести эксперимент в два этапа. На первом этапе тестирования два MacBook Air должны были пройти расширенный запуск MemTest86. Целью этого этапа было установить, что у этих двоих нет ошибок памяти. На втором этапе мы должны установить macOS 10.13 на один из двух MacBook Air и запустить MemTest86 в обычном режиме, чтобы увидеть результаты. Целью второго этапа было подтвердить наши подозрения, что недавние обновления EFI для компьютеров Apple могут повлиять на производительность MemTest86.

Результаты первого этапа испытаний были многообещающими. Мы настроили два компьютера на выполнение двадцати проходов MemTest86 и позволили им работать всю ночь. Когда мы вернулись утром, мы заметили, что ни одна из машин не сообщила об ошибках во время тестирования. Мы восприняли результаты этого этапа как означающие, что ни у одного из двух MacBook Air не было неисправной памяти, и перешли к следующему этапу.

Результаты второго этапа также были многообещающими, поскольку они подтвердили наши подозрения: новые обновления EFI будут мешать программному обеспечению MemTest86 тестировать память компьютера Apple. MacBook Air, который мы обновили до macOS 10.13, сообщил о десяти тысячах ошибок, в то время как другой Air не сообщил об ошибках. Хотя мы не можем с уверенностью сказать, какой аспект обновления EFI вызывает эти ошибки, мы можем с уверенностью сказать, что обновление до более новых версий EFI вызовет ошибки с MemTest86 при обычном запуске тестов.

Ошибки и сбои памяти Apple MacBook

Конечно, с этими результатами возник следующий вопрос: как мы можем надежно протестировать память компьютера Apple таким образом, чтобы мы могли доверять результатам? Для этого мы изучили, как эти компьютеры с более новыми версиями EFI не работают в MemTest86. Хотя затронутые компьютеры не будут давать сбой при каждом прохождении MemTest86, очень высока вероятность того, что они не пройдут проход в какой-то момент. Так уж вышло, что когда эти компьютеры действительно не прошли MemTest86, эти компьютеры не выдержали испытания 10 и 13.

В случае неудачного теста 10 проблемные диапазоны адресов всегда оставались одинаковыми. Сбои всегда происходят в диапазоне адресов памяти от 0x00 до 0x1000. В частности, о большом провале говорят несколько отказов, которые происходят на первом этапе этого теста. Когда MemTest86 записывает все нули в тестируемую секцию, адреса 0x00 и 0x04 обычно не работают. Когда они действительно терпят неудачу, мы наблюдаем, что каждый адрес терпит неудачу одинаково (например, адрес 0x00 всегда будет читать 0x02000112, а адрес 0x04 всегда будет читать 0x0800000, когда они не пройдут эту часть теста). Во втором проходе теста 10 «записать все» все адреса в диапазоне не работают. Следует отметить, что все значения данных в каждом адресе – все нули, как если бы MemTest86 не смог записать какие-либо данные по этому адресу памяти.oshibki_apple

За двумя ошибками в первом шаблоне следуют 1024 ошибки во втором шаблоне.

В случае сбоя теста 13 диапазоны адресов также оказываются между 0x00 и 0x1000. Подобно тому, как последние части теста 10, похоже, не записывают никаких данных в затронутые диапазоны адресов, тест 13 также не записывает никаких данных по своим адресам памяти; ожидаемый ввод рандомизирован, но все данные чтения нули. Также существует проблема с микропрограммой, блокирующей доступ ко всем ядрам процессора, кроме нулевого ядра для этого теста, хотя какое влияние это оказывает на производительность теста, еще предстоит определить.

Тест 13 в процессе провала. Этот тест может сгенерировать еще несколько тысяч ошибок.

Тестирование памяти Apple MacBook

Чтобы протестировать память компьютера Apple, на котором установлена ​​или была установлена ​​High Sierra, мы должны запустить MemTest86 дважды. Одной из ключевых особенностей MemTest86 является возможность выбора диапазона памяти для выполнения тестов. Зная это, мы разработали решение для тестирования памяти вашего компьютера Apple, которое работает с версией EFI, которая предшествует и заменяет обновление EFI, которое поставляется с macOS 10.13.

Когда мы загружаемся в MemTest86, нам нужно перейти в меню конфигурации. Обычно тесты запускаются автоматически, но мы можем обойти это, нажав любую клавишу после загрузки программы. В меню конфигурации есть меню «Диапазон адресов». Выберите это меню, и вы увидите три варианта: Нижний предел , Верхний предел и Сбросить пределы до значений по умолчанию . Регулируя эти значения, мы будем тестировать диапазон памяти по частям. Обратите внимание, что верхний предел будет отличаться от компьютера к компьютеру и отражает объем памяти вашего компьютера.

Мы будем использовать шестнадцатеричные значения при настройке адресов памяти для тестов, что требует от нас предоставления префикса 0xперед тем, как мы предоставим значение. Имейте в виду, что если вы нажмете Икс в любом месте меню конфигурации MemTest86,  вы выйдете из программы! Но если вы нажмете Икс при настройке значений диапазона адресов памяти все будет в порядке.

Установка нижнего предела адреса на 0x1000

Для первого прохода установите для параметра нижнего предела значение «0x1000» и оставьте верхний предел значением по умолчанию. Запустите тест. После завершения теста вы можете быть уверены, что все сообщенные ошибки действительны, хотя, надеюсь, таких ошибок не будет! Для второго прохода вернитесь в меню адреса, установите нижний предел на «0x00» и установите верхний предел на «0x1000». Снова запустите тест и посмотрите на результаты.

Сброс нижнего предела на 0x0 и изменение верхнего предела на 0x1000

Этот метод позволяет проводить все тесты во всем диапазоне памяти компьютера Apple. Мы еще не сталкивались с какими-либо ложными ошибками при использовании этого метода тестирования, хотя мы приглашаем всех попробовать его и сообщить нам, как он работает у них.

Результат тестирования памяти MacBook

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

Apple была проинформирована об этой проблеме, но на сегодняшний день Apple еще не ответила ни на какие сообщения об этой проблеме. Учитывая недавние усилия Apple по лоббированию , кажется более чем совпадением то, что обновление вашего компьютера Apple до macOS 10.13 влияет на производительность тестов 10 и 13.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *