[Из песочницы] Надёжен ли твой компьютер?

Представляю вашему вниманию перевод статьи Джеффа Атвуда о тестировании новых компьютеров. Я не видел ни одной статьи подобного качества на эту тему; в статье приведена вся необходимая информация и ничего лишнего, а так же хорошо структурирован материал. Надеюсь, и вам она придётся по нраву.

Джефф — основатель StackOverflow. Ныне он работает над проектом Discourse.

Оригинальная статья: Is Your Computer Stable?

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

Например, вот что может понадобится для сборки Scooter Computer:

  1. Нанести немного термопасты на верхнюю часть корпуса.
  2. Поместить в корпус материнскую плату.
  3. Прикрутить материнскую плату к корпусу.
  4. Вставить плату SSD.
  5. Вставить плату RAM.
  6. Подключить внешнее питание.
  7. Загрузиться.


Вот и все.

Это до смешного просто. Мы с моим шестилетним сыном собирали конструкторы Лего, которые были намного сложнее. Сборка традиционных ПК отличается всего парой дополнительных шагов: вставить процессор, радиатор, подключить кабели. И, наконец, сборка сервера добавляет еще пару незначительных действий, возможно, с ограничениями на размер сборки. Мини-компьютер, обычный ПК или сервер — если вы смогли собрать один из них — считайте вы собрали их все.

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

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


Мне нравится начинать с тестирования памяти, так как для него не обязательно наличие установленной ОС и оно работает одинаково на всех x86 компьютерах. Memtest86 является «прадедушкой» всех тестировщиков памяти. Я не уверен, почему он и Memtest86+ разделились, но они работают практически одинаково. Версия от PassMark является более новой, поэтому её я и рекомендую.

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

image
(если ваш компьютер поддерживает UEFI boot, вам будет доступна более новая версия 6.x, в другом случае — версия 4.2, которая показана на скриншоте).

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

Значение «Pass» в верхней части экрана должно дойти до отметки в 100%, а значение «Pass» в таблице должно быть больше единицы. Если у вас появляются какие-то ошибки, да и вообще всё что угодно, кроме чистой отметки в 100% — ваш компьютер не надёжен. В таком случае стоит начать вынимать платы памяти, чтобы обнаружить неисправную.


Все последующие тесты будут нуждаться в установленной ОС, и самый важный из всех тестов на надёжность это тестирование того, возможно ли установить на компьютер операционную систему. Выберите вашу любимую бесплатную ОС и начните обычную установки. Я рекомендую Ubuntu Server LTS x64, так как у нее намного меньшие ожидания по поводу вашего видеооборудования. Скачайте ISO и запишите его на загрузочную флешку, затем загрузитесь с неё.

image
(Эй, вы только посмотрите, там есть опция для тестирования памяти! Как предусмотрительно!)

  • Удостоверьтесь в том, что у вас присутствует стабильное интернет-соединение с DHCP. Это позволит установке пройти быстрее.
  • В общем случае, вы будете нажимать Enter очень много раз, принимая все настройки по умолчанию. Да знаю, знаю я, что мы устанавливаем Linux, но хотите верьте, хотите нет —, но они сделали процесс установки очень дружелюбным.
  • Касательно того, что нужно вводить в качестве логина и пароля для аккаунта по умолчанию, я рекомендую jeff и password, так как я являюсь одним из самых выдающихся экспертов в компьютерной безопасности.
  • Если вы устанавливаете ОС с флешки и получаете сообщение об отсутствующем CD, просто выньте и вставьте обратно флешку. Я тоже не знаю почему это работает, но это работает.


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

В любом случае, для следующих тестов нам будет необходима установленная ОС. В дальнейшем я предполагаю, что вы установили Ubuntu, но в действительности подойдет любой дистрибутив Linux.


Теперь, давайте убедимся в том, что мозги нашего компьютера в порядке. Честно говоря, если вы дошли это этого момента, и тесты памяти и ОС завершились успешно, то шанс того, что вы имеете неисправный компьютер практически равны нулю. Но нам нужно быть уверенными, а лучший способ добиться этого — обратиться к нашему старому другу, Марену Мерсенну.

image

Числа Мерсенна (англ. Mersenne numbers) — числа вида Mn = 2^n — 1, где n — натуральное число. Числа такого вида замечательны в том числе тем, что некоторые из них являются простыми числами. Числа Мерсенна названы в честь французского математика Марена Мерсенна исследовавшего их свойства в 17 веке.


Обычно я использую Prime95 и Mprime — программы, которые анализируют огромное количество гигантских чисел с целью определить, являются ли они простыми. Вот как мы скачиваем и устанавливаем mprime на нашу свежеустановленную Ubuntu Server:

mkdir mprime
cd mprime
wget mersenne.org/gimps/p95v287.linux64.tar.gz
tar xzvf p95v287.linux64.tar.gz
rm p95v287.linux64.tar.gz

(Возможно, вам придётся заменить номер версии в командах на текущую последнюю версию отсюда: www.mersenne.org/download, но на момент написания статьи, приведённая мной версия является последней).

Теперь запустите mprime командой ./mprime

image

На вопрос отвечаем N.

Далее вас попросят указать количество тестов на выполнение. Но программа умна и по умолчанию выбирает количество потоков равным количеству логических ядер, так что просто нажимаем enter — нам нужно полное тестирование всех процессоров и ядер. Далее выберем тип тестирования:

  1. Small FFT’s (максимум тепла + стресс-тест FPU, данные помещаются в L2-кэш, RAM практически не тестируется).
  2. In-place large FFT’s (максимальное потребление электричества, немного тестирует RAM).
  3. Blend (всего по чуть-чуть, много тестов RAM).


Оговорюсь, что они не шутят, говоря «максимальное потребление электричества». Выберите 2, затем Y, чтобы начать пытать ваш процессор. Теперь наблюдайте за тем, как он корчится от боли.

Accept the answers above? (Y):
[Main thread Feb 14 05:48] Starting workers.
[Worker #2 Feb 14 05:48] Worker starting
[Worker #3 Feb 14 05:48] Worker starting
[Worker #3 Feb 14 05:48] Setting affinity to run worker on logical CPU #2
[Worker #4 Feb 14 05:48] Worker starting
[Worker #2 Feb 14 05:48] Setting affinity to run worker on logical CPU #3
[Worker #1 Feb 14 05:48] Worker starting
[Worker #1 Feb 14 05:48] Setting affinity to run worker on logical CPU #1
[Worker #4 Feb 14 05:48] Setting affinity to run worker on logical CPU #4
[Worker #2 Feb 14 05:48] Beginning a continuous self-test on your computer.
[Worker #4 Feb 14 05:48] Test 1, 44000 Lucas-Lehmer iterations of M7471105 using FMA3 FFT length 384K, Pass1=256, Pass2=1536.

Сейчас самое подходящее время, чтобы расчехлить свой Kill-a-Watt или другой похожий измеритель потребления энергии. Если у вас есть такой, вы можете измерить максимальное потребление энергии процессором. В большинстве систем, CPU является единственным значимым потребителем энергии в системе, только если у вас не стоит мощная игровая видеокарта.

Так же я советую запустить i7z в другом терминале: так вы сможете отслеживать температуру ядер и частоты, в то время как mprime делает свою работу.

sudo apt-get install i7z
sudo i7z

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

image

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

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


Диски, наверно, заменить проще всего, но одновременно с этим они самые вероятные кандидаты для отказа. Мы знаем что диск не может быть сломан — мы ведь только что установили новую ОС, но лишний тест не помешает.

Начнем с тестирования «плохих» блоков (Badblocks):

sudo badblocks -sv /dev/sda

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

Checking blocks 0 to 125034839
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)

Теперь проверим SMART записи для нашего диска.

sudo apt-get install smartmontools
smartctl -i /dev/sda

Вышеприведённая команда позволит узнать, поддерживает ли ваш диск SMART. Если да, давайте активируем его:

smartctl -s on /dev/sda

Теперь мы готовы запускать SMART тесты. Но сначала давайте узнаем, как долго будут выполняться разные тесты:

smartctl -c /dev/sda

Запустите long тест, если у вас есть время или short, если нет.

smartctl -t long /dev/sda

Тесты выполняются асинхронно; после истечения указанного времени откройте отчет по тесту SMART и убедитесь, что все прошло успешно:

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 100 -

Далее, запустить простой бенчмарк, чтобы убедиться в том, что производительность диска примерно соответствует ожидаемой:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
hdparm -Tt /dev/sda

Для системы с обычным SSD вы должны получить как минимум следующие результаты, а скорее всего намного лучше:

536870912 bytes (537 MB) copied, 1.52775 s, 351 MB/s
Timing cached reads: 11434 MB in 2.00 seconds = 5720.61 MB/sec
Timing buffered disk reads: 760 MB in 3.00 seconds = 253.09 MB/sec

Наконец, проведем более интенсивный тест с помощью bonnie++:

sudo apt-get install bonnie++
bonnie++ -f

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

(Я считаю, что приведённые мной тесты отлично подходят для повседневного использования, в частности для дисков в составе RAID. Однако, если вы хотите протестировать ваши диски ещё более тщательно, предлагаю хороший ресурс: FreeNAS «how to burn in hard drives»)


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

Вам понадобится два компьютера для теста iperf. Допустим, наш сервер имеет адрес 10.0.0.1, вот команды для него:

sudo apt-get install iperf
iperf -s

А вот наш клиент, который будет подключаться к серверу и следить за тем, как быстро мы можем передавать данные между машинами:

sudo apt-get install iperf
iperf -c 10.0.0.1

------------------------------------------------------------
Client connecting to 10.0.0.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 10.0.0.2 port 43220 connected with 10.0.0.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0–10.0 sec 1.09 GBytes 933 Mbits/sec
Вы должны видеть примерно 120 мегабайт/сек (960 мегабит/сек) для одиночного гигабитного Ethernet соединения. Если вам повезло иметь 10-ти гигабитное соединение, отлично, поздравляю с вашими 1.2 Гигабайтами/сек.


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

Но ты же геймер, да? Тогда тебе нужно загрузиться в Windows и попробовать что-то на подобие furmark. И ты должен протестировать видеокарту, потому что видеокарты, особенно игровые, зачастую являются самым мощным и сложным устройством, потребляющим огромное количество ватт. И да, следите за температурой.


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

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

image

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

© Geektimes