Стресс тест компьютера linux программы. CPU стресс-тест в Linux, как нагрузить все ядра микропроцессора

Почему стоит выполнять стресс тест на процессор? Для проверки надежности и стабильности вашей машины/системы. Запуск стресс-теста помогут также помочь узнать, нужно ли обновить или добавить новое охлаждение для вашей машины. В своей теме «Стресс тест 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) завершен.

Чтоб нормально протестировать систему охлаждения процессора и стабильность работы в разгоне, когда для достижения высоких частот приходиться поднимать еще и напряжение, нужно под завязку загрузить его под завязку на довольно продолжительное время. В этом помогут только специальные утилиты, которые умеют, загрузят процессор по завязку, сложными, но бессмысленными вычислениями. Тут главное взять «правильную» программу, чтоб она эффективно работала, используя сложные формулы с плавающей запятой для обработки большого объема данных. Пожалуй, одну из лучших утилит создали Intel, которая называется Linpack. Правда, делали её программисты для продвинутых пользователей, не заморачиваясь над окнами с рюшами, ограничившись командной строкой. Черный экран с непонятными бегущими строками вгоняет обычных пользователей компьютера в ступор, которые не понимают, что с эти делать и куда щелкать мышью. Славу богу нашлись добрые люди, которые прикрутили к Linpack графическую оболочку, назвав свое творение LinX .

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

О том, что за созданием тестов стоят Intel не стоит беспокоиться об эффективности работы с процессорами AMD, LinX отлично нагружает процессоры как Intel и AMD.

После запуска LinX, программа фактически готова к работе для этого достаточно нажать кнопку «Старт» вверху с правой стороны. Дальше набираемся терпения и ждем, пока пройдет заданное количество тестов по кругу. При завершении каждого цикла тестов в таблицу, будут добавляться его результаты, а именно потраченное время, скорость обработки данных, количество использованных потоков и размер матрицы системы линейных уравнений, который был использован для расчетов. За раз, нагружая процессор по максимуму, позволяя проверить его на стабильность работы и эффективность отвода тепла системой охлаждения.

Чтоб остановить прогон тестов, достаточно нажать «топ».

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

  • «Объем задачи:», указать размер матрицы системы линейных уравнений, которая будет использована для расчетов. Чем больше, тем дольше идут вычисления. Обратите внимание, этот параметр связан с «Памятью», то есть при изменении одного из них будет автоматически меняться другой.
  • «Память (Миб)», объем оперативной памяти, которую программа может использовать программа. Как уже говорилось выше при увеличении объема, автоматически будет меняться «Объем задачи:», так же и наоборот.
  • «Выполнять» сколько прогонов тестов будет сделано по кругу.

Из интересных возможностей программы стоить отметить поддержку получение данных о температуре процессора, частот ядер и напряжения питания из приложений Everest / Speedfan и выводить их в виде графи во время тестов. Плюс разрешить останавливать тесты при возникновении ошибок или если процессор нагреться выше заданного значения (только при работе в паре Everest / Speedfan). Так же в настройках можно задать количество потоков, которое одновременно будет выполняться, выбрать разрядность тестов 32 или 64-х битных, приоритет процессов тестирования (лучше оставить по умолчанию, чтоб компьютер не тормозил), и ограничить объем используемой памяти программы, чтоб операционная система не тормозила.

На сегодняшний день LinX, а если быть совсем точными, то Linpack если откинуть графическую оболочку, единственный тест который позволяет наиболее адекватно проверить стабильность работы процессора. Учтите, это программа создает на процессор очень высокие нагрузки, под которыми в домашних условиях он никогда работать не будет, и не желательно постоянно запускать её у себя на компьютере на несколько часов. Особенно в свете того что у всех процессоров Intel последних поколений под крышкой терможвачка, которая при длительном воздействии высоких температур, со временем может терять свои свойства.

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

Если вы еще не сталкивались с этой операционной системой, то смело поднимайте виртуалку или устанавливайте в качестве основной и используйте ее повседневно.

Мое знакомство с Linux/*nix началось с Ubuntu 13.04. Наверное это один из самых user-friendly дистрибутивов (посмотрите также в сторону Elementary OS). До этого я только тренировался на Linux Red Hat, образ которого я запускал через Virtual Box. У меня не было конкретных задач, поэтому мои тренировки заключались лишь в изучении тех или иных терминальных команд. Раньше моей основной операционной системой была Windows, в которой по моему мнению я не плохо разбирался, и она меня всем устраивала.

Знакомство с ОС было принудительным, меня буквально усадили за Ubuntu, аргументируя тем, что мне это пригодится по работе. Притирка была очень сложной, не раз я подумывал вернуться на Windows. Довольно долго нервничал, потому что было сложно привыкнуть к новым настройкам и функционалу. К тому же версия 13.04 была очень глючной, по этой причине я больше не устанавливаю Ubuntu новых версий, пока не выходит LTS (Long Term Support). В конце концов я не пожалел что пересел на Ubuntu.

Основываясь на личном опыте, меня отпугивали пару моментов, от использования этой ОС.

  • Софт. Я не знал о наличии тех или иных аналогов для Ubuntu и переживал о том что не смогу найти нужные программы. Но к счастью софта очень много, практически всегда есть хорошие альтернативы, а порой и более масштабный выбор. К тому же которыми я пользуюсь по сей день были представлены в версиях для Ubuntu.
  • Браузеры. В каких-то старых новостях, вычитал что рендеринг страниц в браузерах разных операционных систем отличается. Я тестирую WEB-проекты и для меня это важно. На деле может быть так и есть, но главные браузеры Chrome и Firefox проходят столько этапов тестирования, что такие мелочи не могут проскочить до конечных пользователей.
  • Сложность установки. Установка Windows(XP, Vista, Win7) очень проста и понятна, не перечисляю более поздние версии, потому что не доводилось их устанавливать, но думаю что процесс не сильно изменился. Дистрибутив Ubuntu или Elementary OS такой же простой в установке, и скорее всего более быстрый.
  • Интерфейсы. Удобство интерфейсов Windows неоспоримо. Я настолько привык к стандартному «рабочему столу», что все остальное казалось мне чуждым. В начале новые расположения кнопок, установка софта и прочие мелочи сильно раздражают и замедляют. Но нужно потерпеть хотя бы пару недель и вы привыкните к «новым правилам» и даже найдете в них свои ценности.

Профит

Очевидные плюсы от опыта использования Linux/*nix

  • Знание операционных систем Linux.

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

  • Работа с серверами

Установка Apache, Nginx, сборка пакетов, Git, серверные приложения, Memchached, Sphinx, ElasticSearch, Базы данных, Разворачивание программных сред и еще очень много интересных решений, для которых отлично подходит именно Linux. Опыт работы с такими средствами, также сыграет вам на руку.

  • Новая архитектура

Для тех кто всегда использовал Windows и не задумывался над тем как она работает, это будет взгляд на что-то новое. На мой взгляд эта ОС позволит иметь более наглядное представление о том, как устроена файловая система и как программы взаимодействуют с железом.

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

  • Удобство

В конце концов я считаю Ubuntu 14.04 удобной ОС. Возможно я по сей день не использую все ее возможности, но я все настроил на свой вкус и вполне доволен. Сейчас даже не представляю как эффективно бы мне работалось на Windows.

Минусы

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

Если вы тестируете Web платформы со сложным Бэкендом и постоянно работаете с серверами через SSH, то Linux для тестировщика это отличная ОС. Найдется много людей которые скажут что можно использовать Windows утилиты, типа Putty либо что-то аналогичное, но я считаю что лучше знать как устроен сам сервер, ведь наверняка он использует тот-же Linux/*nix.

Будет справляться, когда нагрузка на процессор достигнет 100 процентов. Таким образом можно выявить проблемы с охлаждением и решить их до того, как они создадут реальные неудобства. В данном материале мы расскажем о том, как провести стресс тест процессора при помощи программ LinX и OCCT.

Одной из самых известных программ для стресс-тестирования процессора является программа LinX. Данная программа полностью бесплатна и представляет собой графический интерфейс для программы Linpack, разработанной компанией Intel. С помощью данной программы можно создать предельную нагрузку на процессор и тем самым узнать до какой температуры прогреется процессор.

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

Но, не спешите запускать LinX. Вам еще потребуется какая-то . Для этой цели можно использовать HWmonitor. Данная программа предназначена для наблюдения за текущими параметрами системы. С ее помощью можно отслеживать температуры, нагрузку, скорость вращения кулеров и многое другое.

Установите и запустите на своем компьютере. После запуска пролистайте список параметров, которые отслеживает HWmonitor, до параметров процессора. При стресс-тестировании нужно обращать внимание на скорость вращения кулеров, температуру и тактовую частоту процессора.

После того как все готово, можно запустить стрес-тест LinX. Для этого нужно просто нажать на кнопку «Старт».

После запуска стрес-тестирования начинаем наблюдать за температурой процессора в программе HWmonitor. Если система охлаждения процессора исправна, то поначалу температура резко увеличится, но после того как вентиляторы раскрутятся на полную мощность она должна снизиться и стабилизироваться на одной отметке. На скриншоте внизу видно, что температура сначала прыгнула до 80 градусов (колонка Max), а потом снизилась до 72 градусов (колонка Value).

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

Для выключения стресс теста просто нажмите на кнопку «Стоп» в программе LinX. Если компьютер завис, и кнопка «Стоп» не работает, то перезагрузите компьютер кнопкой Reset на системном блоке.

Тестирование процессора с помощью OCCT

OCCT – еще одна очень популярная программа для стресс-тестирования процессора. OCCT оснащена сразу двумя алгоритмами тестирования процессора. Это Linpack, который используется в LinX, а также собственный алгоритм OCCT. При этом OCCT оснащается более продвинутым интерфейсом. С его помощью можно отслеживать температуру, нагрузку и другие параметры процессора. Так что при тестировании с помощью OCCT программа HWmonitor уже не понадобится.

Для того чтобы провести стресс тест процессора при помощи OCCT , установите и запустите на своем компьютере. Дальше нужно перейти на вкладку теста, который вы хотите использовать, и нажать на кнопку «ON».

Дальше все точно также как с LinX. Если система охлаждения процессора исправна, то температура сначала подскочит, а потом снизится и стабилизируется на какой-то отметке. Если система охлаждения не исправна либо не справляется с нагрузкой, то температура будет продолжать расти. В этом случае стресс тест нужно остановить.

Прогнал я тест Linpack и задумался: а не пора ли мне поменять термопасту на своём ноутбуке?

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

Стресстест процессора в терминале Linux

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

Начал я с sysbench:

sudo apt install sysbench

sysbench --num-threads=4 --test=cpu --cpu-max-prime=100000 run

  • --num-threads=4 - это количество потоков, у меня двухъядерный четырёхпотоковый Intel® Core™ i7-640M, поэтому 4;
  • --cpu-max-prime=100000 - это максимальное количество выполненных операций, я выставил в 100000, т.к. по умолчанию - 10000, слишком быстро завершают тест.

Потом я перешёл на Linpack. Так как процессор у меня от Intel и я имею некоторую долю лени (лень - двигатель прогресса), то я взял, скачал и распаковал готовый Intel-овский Linpack , предварительно создав в домашнем каталоге директорию linpack:

mkdir ./linpack
cd ./linpack
wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9752/l_mklb_p_2018.3.011.tgz
tar -xvzf ./l_mklb_p_2018.3.011.tgz

Для AMD процессоров такой вариант я бы не стал пробовать, так как компилятор от Intel вставляет закладки, проверяющие процессор и если он не Intel...ну, подумаешь сотню-другую лишних инструкций процессор выполнит и заведомо проиграет в производительности. Для AMD лучше собрать Linpack из исходников, например, из этих . В данной статье сборку из исходников рассматривать не буду - читайте README в source code.

Вернёмся к Intel-овскому Linpack-у. Там много чего лишнего и мне не нужного, а то, что нужно рассмотрю относительно версии 2018.3.011. Сразу же перейду в нужную директорию, чтоб потом не набирать длинные команды:

cd ./l_mklb_p_2018.3.011/benchmarks_2018/linux/mkl/benchmarks/linpack

Так как по умолчанию Intel-овский Linpack заточен под тестирование серверных Xeon-ов, создадим свой файл, который будет использоваться в качестве входных опций - просто уменьшим количество тестов, иначе устанем "пару-тройку дней" ждать завершения теста. У меня Linux Mint LMDE 3, поэтому я использую текстовый редактор xed, да и нравится он мне бОльшим функционалом, особенно, когда из-под root-а его запускать - он цвет на красный меняет. И так, создаём в этой же директории, в которую перешли, файл, например, my_test:

И в созданный файл копируем следующее содержимое:

Shared-memory version of Intel(R) Distribution for LINPACK* Benchmark. *Other names and brands may be claimed as the property of others.
Sample data file lininput_xeon64.
5 # number of tests
1000 2000 5000 10000 20000 # problem sizes
1000 2000 5008 10000 20000 # leading dimensions
4 2 2 2 1 # times to run a test
4 4 4 4 4 # alignment values (in KBytes)

Ну, и собственно запуск Linpack с созданным файлом:

./xlinpack_xeon64 -i ./my_test

./xlinpack_xeon64 ./my_test

Можно ещё заюзать stress-ng или stress, но поставленной мной задачи это всё-равно не решает. Вывода температуры, частот и времени от начала старта эти утилиты мне не показывают.

Температуру может показать sensors - подробнее про установку этой утилиты . И эта утилита понадобится в дальнейшем рассмотрении моего вопроса. Линукс - велик и могуч: одна и та же задача может решаться по-разному. За Си мне лень было браться и я написал недостающую мне часть на BASH, ибо строк получилось не так уж и много. Без установленной sensors мой скрипт работать не будет. Фиксацию троттлинга естесственно не стал писать - его и так будет видно по сбросу частоты и температуре. Вот сам скрипт:

#!/bin/bash
out=0 # переменная контроля за тестовым процессом
pid_test="tty" # PID тестового процесса (сделан существующей директорией, чтоб запускать без аргументов)
cpus_num=$(cat /proc/cpuinfo | grep -ci "processor") # количество процессоров/ядер/потоков
echo -en "\033[?25l" 1>&2 # скрыть курсор
echo -en "\033[^:]*: //g" | sort -u # вывод модели процессора
echo -en "\033=$(sensors | sed "/Core ""$i""/!d;s/.*crit = +\(.*\)[.]°C).*/\1/")
if [ -n "${cpu_crit_temp[i]}" ]
then
let cpu_red_temp[i]=cpu_crit_temp[i]-10
let cpu_yel_temp[i]=cpu_crit_temp[i]-30
cpu_min_temp[$i]=1000
cpu_max_temp[$i]=0
fi
done
start_time=$(cat /proc/uptime | sed "s/[.] .*$//") # время запуска
if [ -n "$1" ]
then
script_pid="$$"
(if ! $@ > "$0_out" 2>&1 # запуск тестового файла
then
kill -s SIGABRT $script_pid # послать сигнал основному скрипту об отказе запуска
fi 2>/dev/null)&
pid_test="$!" # PID тестового процесса
fi
while (true) # контроль температуры
do
for ((i=0; i<$cpus_num; i++))
do
cpu_freq[$i]=$(cat /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_cur_freq | sed "s/...$//")
cpu_temp[$i]=$(sensors | sed "/Core ""$i""/!d;s/.*+\(.*\)[.]°C[ \t]*(.*/\1/")
if [ -n "${cpu_temp[i]}" ]
then
((${cpu_temp[i]} < ${cpu_min_temp[i]})) && cpu_min_temp[$i]=${cpu_temp[i]}
if ((${cpu_temp[i]} > ${cpu_max_temp[i]}))
then
cpu_max_temp[$i]=${cpu_temp[i]}
time_max[$i]=$(cat /proc/uptime | sed "s/[.] .*$//")
let time_max[i]=time_max[i]-start_time
fi
if ((${cpu_temp[i]} > ${cpu_red_temp[i]}))
then
echo -en "cpu${i}:\t"
echo -en "\033} "
echo -en "\033}"
echo -en "\033}"
echo -en "\033} > ${cpu_yel_temp[i]}))
then
echo -en "cpu${i}:\t"
echo -en "\033} "
echo -en "\033}"
echo -en "\033}°C; max: "
echo -en "\033}"
echo -en "\033}sec) "
else
echo -en "cpu${i}:\t"
echo -en "\033} "
echo -en "\033}"
echo -en "\033}°C; max: "
echo -en "\033}"
echo -en "\033}sec) "
fi
else
echo -en "cpu${i}:\t"
echo -en "\033} "
echo -en "\033 .*$//")
let time=time-start_time
echo -en "Time:\t$time sec. "
[ ! -d "/proc/${pid_test}" ] && break # выход по окончании теста (лучший способ контроля по comm и cmdline, но...лень)
[ "$out" != "0" ] && break # выход при ошибке теста
echo -en "\033[${i}A\r" 1>&2 # перенос курсора вверх на $i строк и на начало строки
sleep 0.1 # пауза, чтоб вывод частот сильно не скакал
done
echo ""
echo -en "\033[?25h" 1>&2 # включение курсора
if [[ "$out" == "0" && -n "$1" ]]
then

rm -fR "$0_out"
exit 0
elif [[ "$out" == "1" && -n "$1" ]]
then
kill -9 "$pid_test" 1>/dev/null 2>/dev/null
cat "$0_out" | sed "/^$/d;/Sample data/d;/CPU frequency/d;/Parameters are set/,/Data alignment value/d"
rm -fR "$0_out"
exit 1
elif [ "$out" == "1" ]
then exit 1
elif [ "$out" == "2" ]
then
echo -en "\033}