Стресс тест cpu в linux. Программы для тестирования Linux. Как пользоваться Linx для тестирования стабильности разгона

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

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

Утилизация мощности двух ядер CPU (40%+70%)

Опытный пользователь операционной системы (ОС) GNU Linux не раз сталкивался со случаями когда простая команда с небольшой ошибкой могла загрузить микропроцессор под самую завязку. Этим мы и воспользуемся, только у нас будет все продумано и с конкретной целью.

Сперва рассмотри достаточно интересную связку из двух отдельных команд, соединенных через конвейер (символ "|", перенаправление ввода-вывода).

Dd if=/dev/urandom | bzip2 -9 > /dev/null

Ее суть: читаем случайные данные из файла "/dev/urandom" используя утилитку "dd", через конвейер "|" перебрасываем эти считанные данные программе-архиватору "bzip2", указываем максимальный уровень сжатия (9) и выводим данный в "черную дыру", то есть в никуда - для этого есть специальный файл "/dev/null".

Таким образом, пока команда запущена (прервать ее можно нажав CTRL+C), архиватор будет сжимать непрерывный поток случайных данных и пересылать результат в вечно пустой файл. На физические диски и файловые системы ничего не пишется, а процессору есть немало работы.

Данная связка из команд загрузит два ядра CPU (Central Processor Unit) таким образом:

  • "dd if/dev/urandom" - загрузит одно ядро примерно на 40%;
  • "bzip2 -9" - загрузит второе ядро примерно на 70%.

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

Наблюдаем за нагрузкой отдельных ядер CPU

Для удобного наблюдения за нагрузкой на каждое из ядер микропроцессора можно использовать программу "System Monitor", которая входит в состав рабочего окружения KDE. Программа с похожим функционалом и таким же названием есть и в среде GNOME.

Рис. 1. Мониторим загрузку двух ядер CPU в GNU Linux используя System Monitor из KDE.

На рисунке результат загрузки двух ядер связкой из двух команд которая были рассмотрена выше. Одно ядро - оранжевй график (70%), другое ядро - желтый график (40%).

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

Sudo apt-get install htop

Для запуска этого консольного монитора ресурсов используем одноименную команду:

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

Рис. 2. Мониторинг нагрузки двух ядер CPU в GNU Linux используя HTOP.

Что же означают в HTOP красные и зеленые отметки в прогресс-барах для ядер CPU? - все проще простого:

  • зеленый цвет - количество ресурсов процессора, выделенные под процессы с нормальным приоритетом;
  • красный цвет - ресурсы CPU, выделяемые процессам с приоритетом ядра.

О том как узнать частоту установленного микропроцессора(ров), режимы работы ядер и другую полезную информацию я писал в одной их предыдущих статей о CPU в GNU Linux .

Утилизация 100% мощности одного или нескольких ядер CPU

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

Скажем микропроцессору "yes"...только очень много раз!

Yes > /dev/null

С виду простая и безобидная команда, а нагрузит она одно ядро CPU примерно на 100% и без скачков. Суть этой конструкции проста: выводим слово "yes" бесконечное количество раз и перенаправляем вывод в "черную дыру" - /dev/null.

Рис. 3. Нагружаем одно ядро CPU на 100% командой yes в GNU Linux.

Другие связки из простых команд для загрузки ЦПУ

Пример с командой "yes" - это наиболее простой и доступный способ нагрузить одно или несколько ядер центрального процессора.

Кроме того, можно поэкспериментировать и с другими командами и программами, которые по умолчанию доступны почти в каждом дистрибутиве GNU Linux.

Суть построения подобных связок из команд следующая:

  1. Что-то откуда-то беспрерывно считываем и перенаправляем в /dev/null;
  2. Выполняем бесконечный анализ данных какой-то программой или утилитой.

Следующая связка позволяет загрузить одно ядро под самый потолок:

Cat /dev/zero > /dev/null

Рис. 4. Нагружаем одно ядро CPU по максимуму на 100% командой cat в GNU Linux.

Суть команды: при помощи команды "cat" выполняем вывод бесконечного потока дынных из псевдо-устройства "/dev/zero" (генерирует нули, 000) в пустоту "/dev/null";

Как видим процесс у нас выполняется с высоким приоритетом (приоритет ядра ОС) и требует для выполнения всю вычислительную мощность одного процессорного ядра.

Для считывания данных из файла псевдо-устройства можно использовать программу "dd".

Dd if=/dev/urandom of=/dev/null

Суть команды: с помощью программы "dd" (if - input file, of - output file) читаем поток случайных данных из /dev/urandom и отправляем их в "никуда" - /dev/null.

Результат мониторинга загрузки ядер в HTOP получим такой же как и на рисунке 4.

А теперь загрузим процессор подсчетом контрольной суммы бесконечного файла с нулями:

Sha1sum /dev/zero

В htop мы сможем видеть то же то и на рисунке 3, правда плотность загрузки будет более стабильной.

Грузим CPU просчитывая MD5-сумму бесконечного потока случайных данных:

Md5sum /dev/urandom

График загрузки будет идентичен тому что на рисунке 4, микропроцессор загружен процессом, который работает на уровне ядра ОС, очень высокий приоритет.

Грузим процессор на 100% используя pbzip2

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

Установить pbzip2 можно командой:

Apt-get install pbzip2

Для нагрузки всех доступных ресурсов процессора достаточно запустить следующую команду:

Cat /dev/zero | pbzip2 -c > /dev/null

Вместо источника потока "/dev/zero" можно использовать "/dev/urandom" или же собрать еще более простую конструкцию:

Yes | pbzip2 -c > /dev/null

Stress - пакет комплексных нагрузочных тестов ПК

О применении утилиты "stress" в GNU Linux я уже писал в статье о самостоятельном ремонте ПК . Там она использовалась в связке с другими программами для получения такого себе нагрузочного стресс-набора на подобии AIDA64 под Windows.

Этой программой можно нагрузить сразу все доступные ядра CPU или же указать конкретно сколько ядер должны трудиться в поте лица. Для установки пакета "stress" достаточно выполнить команду:

Sudo apt-get install stress

Итак, запускаем программу с указанием загрузить 4 ядра микропроцессора:

Stress --cpu 4

Результаты производительности приведены ниже.

Рис. 5. Нагружаем все ядра CPU по максимуму на 100% командой stress в GNU Linux.

Рис. 6. Смотрим результат работы программы stress в htop.

В заключение

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

Тем не менее, установив программу "stress" можно решить задачу комплексно и с дополнительными возможностями. Также для нагрузки и тестов можно использовать такой пакет программ как "phoronix-test-suite", но это уже отдельная история...

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

Главное окно Linx

Возможности программы:


Как пользоваться Linx для тестирования стабильности разгона

  • Запускаем программу, в настройках устанавливаем необходимое число потоков и 32\64 битный режим. Проверяем, что установлена галочка — стоп при ошибке.
  • Опционально — подключаем Everest (ныне Aida64) или Speedfan, устанавливаем предельную температуру.
  • В основном окне программы выбираем всю доступную оперативную память
  • Запускаем 1 тестовый прогон, исходя из времени, за которое он прошел, выставляем количество повторений таким, чтобы тест длился не менее часа.
  • Запускаем тест с повторениями, мониторим температуру и ждем.
  • Если тест не пройден — проверяем предельную температуру, напряжение и другие параметры, подбираем более подходящие и повторяем тестирование.

Почему стоит выполнять стресс тест на процессор? Для проверки надежности и стабильности вашей машины/системы. Запуск стресс-теста помогут также помочь узнать, нужно ли обновить или добавить новое охлаждение для вашей машины. В своей теме «Стресс тест cpu на Linux (Debian/Ubuntu/Mint или RedHat/CentOS/Fedora)» я расскажу как пользоваться утилитой cpuburn для тестирования нагрузки на процессор(ы).

1. Установка CPUburn.

Устнановка cpuburn на /Debian/Ubuntu/Mint:

  • # apt-get update && apt-get install cpuburn

Устнановка cpuburn на RedHat/CentOS/Fedora:

  • # yum update && yum install cpuburn

Вы можете посмтреть руководство по использованию для утилиты cpubun, выполнив:

    # man cpuburn

burnP5 оптимизирован для процессоров Intel Pentium с/без MMX. cpuburn, burnBX, burnK6, burnK7, burnMMX, burnP5, burnP6 - коллекция программ для тестирования большой нагрузки на CPU.

burnP6 оптимизирован для процессоров Intel PentiumPro, Pentium II & III.
burnK6 оптимизирован для процессоров AMD K6.
burnK7 оптимизирован для процессоров AMD Athlon/Duron.
burnMMX тестыальтернативный кэш/тест памяти на всех процессарах с MMX.
burnBX альтернативный кэш/тест памяти оптимизирован для процессоров Intel.

Эти программы предназначены для загрузки процессоров для x86 насколько это возможно для целей тестирования системы. Они были оптимизированы для различных процессоров. FPU и ALU инструкции кодируются на ассемблере в бесконечном цикле. Они не испытывают все инструкции. Цель в том, чтобы создать нагрузку и посмотреть какая температура при этом создается, положив нагрузку на сам процессор, систему, материнскую плату и блок питания.

Утилита для тестирование разработана, чтобы создать на вашем компьютере сбой, поэтому убедитесь, что ничего критического не запущено на нем и все важные данные сохранены на жестких-дисках. Лучше всего, запустить программу на файловых системах и смотнируйте только для чтения. Обратите внимание, что root привилегии не требуется.

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

  • # burnP6 || echo $? &

Для мониторинга хода работы CPUBurn используйте ps. Вы можете следить за температурой процессора и/или напряжения в системе через ACPI или с помощью LM-датчиков, но если ваша система поддерживает это. После завершения стоит завершить данный (е) процессы, для примера:

  • # killall burnP6

Установите htop для мониторинга нагрузок на ваш сервер.

  • # apt-get update && apt-get install htop
  • # yum update && yum install htop

Запустим htop, для проверки нагрузки:

  • # htop

Cтресс тест cpu на Linux (Debian/Ubuntu/Mint или RedHat/CentOS/Fedora) завершен.

Вопросом диагностики компьютера владельцы ПК или ноутбуков обычно озадачиваются при регулярных ошибках в их работе. Но немалая доля энтузиастов увлекается разгоном процессоров, видеокарт, завышением рабочих частот памяти и т.п. Естественно, что бесперебойная работа в таких нештатных ситуациях не гарантируется, и оверклокерам в процессе разгона приходится проверять стабильность работы разгоняемого устройства. Проверка процессора – обязательный этап при разгоне CPU. Предлагаемая статья как раз и посвящена вопросу проверки работы процессора под максимальной нагрузкой после разгона . Утилита LinX 0.6 с очень простым интерфейсом поможет нам в этом.

Недавно на сайте была статья о , в которой лишь упоминалось о необходимости диагностики CPU, но разъяснений не было. Сегодня я решил восполнить этот пробел и описать процедуру проверки процессора. Для диагностики компьютера понадобится всего одна утилита, предназначенная для максимальной нагрузки CPU вычислительными задачами. Имя этой компактной программе – LinX. На данный момент актуальной является «LinX 0.6.5 ». Кроме тестирования стабильности утилиту можно применять и в качестве неплохого бенчмарка.

С точки зрения пользователя LinX 0.6 очень простая и удобная вещь с простым и интуитивно понятным интерфейсом (русский и английский варианты). Ею поддерживается как процессоры Intel, так и CPU от AMD. В настройках можно выбрать 32/64-битный режим работы, количество потоков, задействовать или выключить технологию HyperThreading от Intel, установить количество прогонов, наблюдать за ходом тестирования «в прямом эфире»… Автоматическое сохранение заданных параметров проверки процессора позволит проводить тестирование с одинаковыми настройками при последующих запусках, например, при постепенном разгоне CPU.


Интерфейс основного окна программы содержит всего несколько элементов управления. В первую очередь нас интересуют параметры «Объём памяти»/«Memory» и количество прогонов «Число раз»/«Run». Для диагностики компьютера рекомендуется в первом параметре выбрать всю доступную память (кнопка «All» возле «Memory»), а «Число раз»/«Run» установить опытным путём: запустить один прогон, и вычислить необходимое количество запусков для работы программы в течение не менее часа. В меню «Настройки»/«Settings» выберите режим 32/64 бит в зависимости от установленного процессора и версии операционной системы. Для запуска/остановки теста используйте кнопки «Тест»/«Стоп» («Start»/«Stop»). В ходе проверки индикатор хода тестирования будет отображать прошедшее с момента запуска время, а при завершении последнего прохода отобразит надпись «Завершено без ошибок за ММ м СС с» (или «Finished without errors in MM m SS s» в английском варианте интерфейса).

При длительном тестировании нестабильной системы могут возникнуть ошибки. Пункт «Stop on Error» в настройках Linx 0.6 прекратит дальнейшую проверку процессора. Это может оказаться вполне полезным при возникновении ошибок из-за перегрева процессора . Вовремя остановленный тест может в некоторых случаях спасти жизнь проверяемому CPU. Если после запуска утилиты Вы зафиксировали температуру близкую к критической или превышающую таковую, то это явный сигнал к тому, что необходимо заменить кулер или снизить разгон.

При использовании LinX 0.6.5 в качестве бенчмарка результаты быстродействия процессора будут отображаться в графе «ГФлопс»/«GFlops» итоговой таблицы основного окна программы. Так, для Intel Core i7-3770k , который был разогнан до 4.5 ГГц, результатом будет цифра в районе 110…115 ГФлопс в зависимости от настроек. после нескольких прогонов указанного CPU размещён выше: скорость указана в таблице для каждого прохода и в строке статуса имеется информация о пиковой (максимальной) производительности в ГФлопс’ах.

Кстати, если Вы задались вопросом разгона процессора , то озадачьтесь и целесообразностью включения технологии HyperThreading для Intel CPU. Отнюдь не во всех задачах от HT есть прирост скорости, а вот занижает разгонные возможности «камня» включенный HT очень часто. Судя по многочисленным обзорам, от HyperThreading нет ни малейшего увеличения FPS в большинстве игр – тут уже «играбельность» больше зависит от видеокарты.

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

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

Бенчмарк может выполняться дли системы в целом, либо для отдельных её составляющих: для центрального процессора, видеокарты, системы ввода-вывода.

В Линукс имеется несколько программ для оценки производительности центрального процессора, например: sysbench , stress-ng и phoronix-test-suite . Из них stress-ng в первую очередь выполняет функции стресс-теста, но она выводит получаемые метрики, поэтому вполне пригодна для оценки и сравнения производительности системы.

Бенчмарк в sysbench

sysbench — это утилита командной строки. Она создана для оценки производительности серверов с сильно нагруженными СУБД, но подходит и для проведения бенчмарков обычных систем.

Установка в Ubuntu, Linux Mint, Debian, Kali Linux:

Sudo apt install sysbench

Встроенные в программу тесты:

  • fileio — Тестирование файлового ввода/вывода
  • cpu — Тестирование производительности CPU
  • memory — Тестирование скорости функций памяти
  • threads — Тестирование производительности подсистемы потоков
  • mutex — тест производительности Mutex

Для запуска теста производительности центрального процессора:

Sysbench cpu run

Обратите внимание как запускается программа: в начале идёт название теста, затем опции (в первом примере их нет), а затем команда.

Для программы установлено два придела выполнения:

  • 10000 операций с числами
  • 10 секунд выполнения

В зависимости от того, что наступит первым, программа завершит свою работу или после 10000 событий, либо после 10 секунд.

Современные процессоры очень производительные и если программа завершилась очень быстро, то данные могут быть искажены. Например, при оценки производительности процессора играет роль, к примеру, троттлинг (сброс частот). Троттлинг начинается из-за перегрева или превышения TDP. Эти эффекты наблюдаются только на длительных дистанциях работы процессора. Если, к примеру, тест завершился за секунду и вы получили n обработанных операций, это не означает, что процессор за 60 секунд выполнит 60 * n операций, поскольку он будет сбрасывать частоты из-за перегрева и выхода за пределы установленного в TDP рассеивания тепла.

Для более длительного выполнения теста используются опции –cpu-max-prime и –time . Первая устанавливает максимальное количество выполненных операций, а вторая — максимальное время проведения бенчмарка. При одновременном использовании опций приоритет имеет –time .

Современные центральные процессоры являются многоядерными и многопотоковыми:

По умолчанию sysbench запускает в один поток. Поэтому если вы хотите задействовать все ядра вашего процессора, используйте опцию –threads . У меня 6 физических и 12 логических ядер центрального процессора, поэтому я буду использовать значение 12, чтобы работали все процессоры.

При использовании опции –cpu-max-prime , чем меньше время завершения программы, тем производительныее центральный процессор:

Sysbench cpu --threads=12 --cpu-max-prime=100000 run

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

Получены результаты:

CPU speed: events per second: 538.23 General statistics: total time: 10.0188s total number of events: 5393 Latency (ms): min: 19.85 avg: 22.27 max: 30.56 95th percentile: 23.10 sum: 120125.61 Threads fairness: events (avg/stddev): 449.4167/4.11 execution time (avg/stddev): 10.0105/0.01

CPU speed events per second означает количество выполненный в центральном процессоре операций за секунду — чем выше значение, тем производительнее система.

General statistics total time означает общее время выполнения операций.

General statistics total number of events означает общее количество выполненный событий.

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

Sysbench cpu --cpu-max-prime=200000 run

Ещё один способ проверки троттлинга и оценки производительности процессора под длительной нагрузкой, это установка времени выполнении, в примере ниже установлено время в 300 секунд.

Sysbench cpu --threads=12 --time=300 run

У меня при использовании опций –time и –cpu-max-prime CPU speed events per second различается в десятки раз — видимо или какой-то баг в программе, либо программа считает по каким-то другим правилам.

Бенчмарк в phoronix-test-suite

Установите программу:

Sudo apt install phoronix-test-suite

Запустите - в первый раз нужно будет принять лицензионное соглашение, так программа спросит разрешение на отправку анонимной статистики:

Phoronix-test-suite list-available-suites

Предыдущая команда выведит список доступных бенчмарков.

Доступные наборы в версии Phoronix Test Suite v8.0.1

Pts/audio-encoding - Audio Encoding System pts/chess - Chess Test Suite Processor pts/compilation - Timed Code Compilation Processor pts/compiler - Compiler Processor pts/compression - Timed File Compression Processor pts/computational - Computational Test Suite System pts/computational-biology - Computational Biology Test Suite Processor pts/cpu - CPU / Processor Suite Processor pts/cryptography - Cryptography Processor pts/daily-kernel-tracker - Daily Kernel Tracker System pts/daily-system-tracker - Daily System Tracker System pts/database - Database Test Suite System pts/desktop-graphics - Desktop Graphics System pts/disk - Disk Test Suite Disk pts/encoding - Encoding System pts/favorites - Favorites System * pts/gaming - Gaming System pts/gaming-closed - Closed-Source Gaming System * pts/gaming-free - Free Software Gaming System pts/gui-toolkits - GUI Toolkits Graphics pts/ioquake3-games - Games Using The ioquake3 Engine System pts/iqc - Image Quality Comparison Suite Graphics pts/java - Java System pts/java-opengl - Java OpenGL System pts/kernel - Kernel System pts/linux-system - Linux System System pts/machine-learning - Machine Learning System pts/memory - Memory Test Suite Memory pts/mesa - Mesa Test Suite Graphics pts/motherboard - Motherboard System pts/multicore - Multi-Core Processor pts/netbook - Netbook Test Suite System pts/network - Networking Test Suite Network pts/nevada - OpenSolaris Nevada Test Suite System pts/opencl - OpenCL System pts/opengl-demos - OpenGL Demos Test Suite System pts/opengl-workstation - OpenGL Workstation Test Suite System pts/pts-desktop-live - PTS Desktop Live System pts/ray-tracing - Ray-Tracing Test Suite System pts/server - Server Motherboard System pts/ue4 - Unreal Engine 4 Tech Demos On Linux Graphics pts/unigine - Unigine Test Suite Graphics * pts/universe - Universe Test Suite System pts/universe-cli - Universe CLI Test Suite System * pts/universe-x - Universe X Test Suite System pts/video-encoding - Video Encoding System pts/workstation - Workstation System pts/workstation-graphics - Workstation Graphics Graphics pts/xrender - X Render Extension Testing Graphics system/collection - Collection System

Звёздочкой отмечены частично поддерживаемые наборы.

Для запуска оценки производительности центрального процессора выполните:

Phoronix-test-suite run pts/cpu

Обратите внимание, что pts/cpu и другие бенчмарки занимают несколько гигабайт дискового пространства. К примеру, pts/cpu загрузит около 3 Гб данных и будет использовать примерно 7 Гб дискового пространства (в домашней директории пользователя).

О том, как контролировать текущую частоту и температуру процессора в Linux смотрите .