- Stress testing
- Contents
- Stress testing software
- Low load examples
- Writing to an image file
- Updating patches for OpenWRT
- Stressing CPU and Memory
- stress
- MPrime
- Linpack
- Systester (AKA SuperPi for Windows)
- Intel Processor Diagnostic Tool
- Stressing memory
- Discovering Errors
- Стресс тест процессора и памяти (VM) на Linux
- Инструмент # 1: Начало работы с инструментом stress
- Установите пакет stress
- Установка на CentOS, RHEL, и Fedora Linux
- Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи
- CPU стресс-тест в Linux, как нагрузить все ядра микропроцессора
- Утилизация мощности двух ядер CPU (40%+70%)
- Наблюдаем за нагрузкой отдельных ядер CPU
- Утилизация 100% мощности одного или нескольких ядер CPU
- Другие связки из простых команд для загрузки ЦПУ
- Грузим процессор на 100% используя pbzip2
- Stress — пакет комплексных нагрузочных тестов ПК
- В заключение
Stress testing
This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.
Running an overclocked or undervolted PC is fine as long as it is stable and that the temperature of its components do not exceed their acceptable range. There are several programs available to assess system stability through stress testing the system and thereby the overclock level.
Contents
Stress testing software
This section lists stress testing software and classifies it by processor task as high, medium, or low. It is important to stress test using mixed loads to verify stability under many use cases.
Work load | Program/Task | Description |
---|---|---|
Low | ||
updating patches | Custom script Refreshing hundreds of kernel patches in the OpenWRT project, see #Low load examples. | |
Medium | ||
Cc/Gcc | Both cc/gcc compilation is a great method of stress testing. Both are available in the base-devel group. | |
HandBrake-cli | handbrake-cli can be used to encode using high quality settings. | |
Systester | systester AUR Systester is a multithreaded piece of software capable of deriving values of pi out to 128,000,000 decimal places. It has built in check for system stability. | |
Stressful Application Test | stressapptest AUR is a memory interface test. | |
High | stress | stress is a simple CPU, memory, I/O, and disk workload generator implemented in C. |
mprime | mprime-bin AUR factors large numbers and is an excellent way to stress CPU and memory. | |
linpack | linpack AUR — Linpack makes use of the BLAS (Basic Linear Algebra Subprograms) libraries for performing basic vector and matrix operations. and is an excellent way to stress CPUs for stability. |
It is recommended to use programs in all three categories to assess the overall system stability. It can happen that a system is more sensitive to a test from the low than from the high demand category. Higher demand voltage programs require the most CPU core voltage (VCORE) due to intense hardware usage to perform their tasks. Medium demand and Low demand workloads do not always call for the highest VCORE when running and as such can be more prone to throwing errors for systems that are undervolted relative to the clock speed requested.
Low load examples
Writing to an image file
A good stability test under a low load workload is using dd to format an image. This can be a physical disk or a loop mounted image. The script below uses mounted image and cycles through each core one-by-one. Note that you should adjust the variables in the top of script to match your system. By default the script will run the command just once per core. It can be easily customized to run on known-weak cores rather than scanning all core 0 through n by altering the for loop. Run the script as root.
Updating patches for OpenWRT
A good stability test of a low load workload is to run though updating the patch sets in the OpenWRT project. Follow these steps.
Stressing CPU and Memory
stress
stress performs a loop that calculates the square root of a random number in order to stress the CPU. It can run simultaneously several workers to load all the cores of a CPU for example. It can also generate memory, I/O or disk workload depending on the parameters passed. The FAQ provides examples and explanations.
To spawn 4 workers spinning on sqrt(), use the command:
MPrime
MPrime (also known as Prime95 in its Windows and MacOS implementation) is recognized universally as one defacto measure of system stability. MPrime under torture test mode will perform a series of very CPU intensive calculations and compare the values it gets to known good values.
The Linux implementation is called mprime AUR and is available in the AUR.
To run mprime, simply open a shell and type «mprime»:
When the software loads, simply answer ‘N’ to the first question to begin the torture testing:
There are several options for the torture test (menu option 15).
- Small FFTs (option 1) to stress the CPU
- In-place large FFTs (option 2) to test the CPU and memory controller
- Blend (option 3) is the default and constitutes a hybrid mode which stresses the CPU and RAM.
Errors will be reported should they occur both to stdout and to
/results.txt for review later. Many do not consider a system as ‘stable’ unless it can run the Large FFTs for a 24 hour period.
/results.txt ; note that the two runs from 26-June indicate a hardware failure. In this case, due to insufficient vcore to the CPU:
Linpack
linpack AUR makes use of the BLAS (Basic Linear Algebra Subprograms) libraries for performing basic vector and matrix operations. It is an excellent way to stress CPUs for stability (only Intel CPUs are supported). After installation, users should copy /usr/share/linpack/linpack.conf to
/.config/linpack.conf and adjust it according to the amount of memory on the system.
Systester (AKA SuperPi for Windows)
Systester AUR is available in the AUR in both cli and gui version. It tests system stability by calculating up to 128 millions of Pi digits and includes error checking. Note that one can select from two different calculation algorithms: Quadratic Convergence of Borwein and Gauss-Legendre. The latter being the same method that the popular SuperPi for Windows uses.
A cli example using 8 threads is given:
Intel Processor Diagnostic Tool
The Intel Processor Diagnostic Tool is a tool that verifies the functionality of an Intel Microprocessor by stress testing the CPU. A Fedora Linux LiveUSB ISO images are available. The LiveUSB image allows you to stress test your machine without using your main operating system; such method might be useful in extreme cases especially when dealing with cold reboots/crashes.
Burn the image to a USB stick by using dd or Gnome Disks and then boot the Live CD. Once booted, open the terminal and type the following command to install Intel Processor Diagnostic Tool for 64-bit machines:
Once it is installed, you can run the Diagnostic Tool by clicking on the IPDT Icon that is located on the desktop.
Stressing memory
Use MemTest86 (proprietary) or Memtest86+ (GPL) to test your memory (RAM). There are «new» and «old» testers:
- «New» versions do not support BIOS. For a new version, use a proprietary MemTest86 version greater or equal to 8. Install it as memtest86-efiAUR or boot the Arch Linux install image.
- «Old» versions do not support UEFI nor DDR4. Old versions are available as GPL memtest86+ (development discontinued). It is roughly equal to proprietary MemTest86 version 4. After installation, update GRUB: it will auto-detect the package and allow users to boot directly to it.
Discovering Errors
Some stressing applications like #MPrime or #Linpack have built in consistency checks to discover errors due to non-matching results. A more general and simple method for measuring hardware instabilities can be found in the kernel itself. To use it, simply filter the journal on a crash like so:
Multicore chips can also give info as to which physical/logical core gave the error. This can be important if users are optimizing settings on a per-core basis.
The kernel can throw these errors while the stressing application is running, before it ends the calculation and reports the error, thus providing a very sensitive method to assess stability. Consider the following from a Ryzen 5900X:
This chip as 12 physical cores. In this case, CPU 21 can be traced back to physical core 10. Use lstopo from hwloc to print the hardware topology.
Источник
Стресс тест процессора и памяти (VM) на Linux
Я хочу проверить свой сервер Linux, OpenBSD, FreeBSD и Unix как он выдержит большую нагрузку и как он будет работать в такой ситуации. Какими средствами я буду тестировать нагрузку на память, процессор и подсистему ввода-вывода в Linux или Unix-подобных?
Администратор может попробовать любой из следующих инструмент для формирования определенной нагрузки. Случаи, в которых это полезно включать в себя те, в которых системный администратор хочет, чтобы выполнить настройки ядра или программист желает оценить при каких условиях произойдет отказ сервиса, и проверить свои системы исключительно на высокой нагрузке с мониторингом состояния и т.д. Также эти утилиты полезны системным администраторам, системным интеграторам и оверклокерам, которые хотят проверить оборудования в условиях высокой нагрузки и контролировать стабильность и среду.
- Stress: Это простой генератор рабочей нагрузки для систем POSIX. Имеет конфигурируемый количество ЦП, памяти, ввода-вывода и дискового стресса в системе. Написано на C, и является свободным программным обеспечением под лицензией GPLv2. Это не тест, а скорее инструмент, предназначенный
- Stress-ng: Это обновленная версия инструмента stress, и он может провести стресс-тест сервера для следующих функций:
- CPU
- Cache
- Тестирования привода
- Синхронизация ввода / вывода
- VM тест
- Тест Socket,
- Переключение контекста
- Создание процесса и прекращение
- Он включает в себя более 60 различных стресс-тестов, более 50 процессоров конкретных стресс-тестов, которые осуществляют с плавающей точкой, целое число, манипуляции с битами и контроль потока, более 20 виртуальных стресс-тестов памяти.
Предупреждение: Запуск следующего инструмента рекомендуется с root привилегиями что бы избежать ошибок памяти и других. Кроме того, обратите внимание, что средства будут использовать ресурсы сервера быстро, так что используйте следующую команду рассудительно.
Инструмент # 1: Начало работы с инструментом stress
Эта программа проста в использовании и рекомендуется для новичков администраторов. Инструмент как известно, работает на платформах x86 и Linux и FreeBSD / OpenBSD, PowerPC AIX и Linux, SPARC Solaris, Compaq Alpha Tru64 UNIX, и многие другие.
Установите пакет stress
Вы можете установить stress как часть дистрибутива.
Установка на CentOS, RHEL, и Fedora Linux
Во-первых, нужно включить epel repo , а затем введите следующую команду , чтобы установить пакет:
Источник
Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи
Часто перед системными администраторами возникает задача: протестировать под нагрузкой новый сервер до запуска его в «продакшин». На помощь приходит Live CD с StressLinux.
Вот краткое описание его возможностей. Этот дистрибутив собранный на пакетной базе openSUSE, оснащенный подборкой приложений для выполнения стресс-тестирования системы и оценки производительности. StressLinux позволяет несколькими способами сформировать интенсивный поток запросов для проверки, как аппаратное обеспечение справится с нетипичной пиковой нагрузкой. Для оценки состояния тестируемой системы используется набор утилит для опроса состояния датчиков температуры, выявления возможных сбоев памяти, мониторинга нагрузки на CPU и дисковую подсистему.
Управление работой дистрибутива производится через консольный интерфейс, для упрощения выполнения типовых операций подготовлен основанный на системе меню скрипт sl-wizard.sh. В дистрибутиве используются следующие тестовые пакеты: stress, cpuburn, nbench, iometer, bonnie++, netio, Netperf, Nepim, Iperf, memtester, memtest86, memtest86+. Из средств мониторинга присутствуют lshw, lm_sensors, hddtemp, ifstatus.
Этот дистрибутив можно загружать через cdrom, usb, vmware или PXE.
1) Подготовка к работе.
После загрузки получаем приглашение на ввод логин/пароля. По умолчанию доступно 2 пользователя: stress (с паролем stress) и root (с паролем stresslinux). Пользователь stress сделан для того, что бы можно было зайти по ssh на тестируемый сервер и управлять удалённо. Переключиться на root’a можно так:
2) Приступаем к работе.
Независимо от того, как вы зашли в систему, будет выдана краткая справка по использованию данного дистрибутива и предложение выбрать материнскую плату из списка. Если ваша плата присутствует, то после выбора модели появится возможность наблюдать температуру процессора, жёсткого диска. Для этого переключаемся на 12-ую консоль (по Ctrl+F12 или Ctrl+Alt+F12) — состояние сенсоров и 11-ая консоль — состояние температуры жёсткого диска. 10-ая консоль покажет трафик в режиме реального времени (при условии, что в сети есть DHCP сервер для получения сетевого адреса)
Все доступные утилиты можно увидеть в выводе motd. Для короткой справки можно использовать команду:
Для работы нужно запустить sl-wizard и следовать указанием мастера. Если нужно перезапустить тест, то делаем такие действие:
#rm /tmp/sensors
#sl-wizard.sh
3) Где взять дистрибутив?
Последние версии дистрибутива можно скачать отсюда http://www.stresslinux.org/sl/downloads
По указанному адресу находятся сборки соответственно для CD, USB, VMware, PXE. Сборки доступны в вариантах как для 32, так и для 64 битных систем.
Источник
CPU стресс-тест в Linux, как нагрузить все ядра микропроцессора
Иногда возникает необходимость выполнить частичную или полную загрузку микропроцессора на персональном компьютере или сервере. Это может понадобиться для стресс-тест системы, для проверки стабильности работы, оценки эффективности системы охлаждения и измерения потребляемой компьютером или сервером мощности под нагрузкой.
В статье приведены конструкции из простых и всегда доступных консольных команд в GNU Linux, которыми можно нагрузить одно или все ядра процессора. Также рассмотрим компактный но очень мощный пакет для стресс-тестов под Линукс, который можно установить одной командой. Все подробно и с примерами!
Утилизация мощности двух ядер CPU (40%+70%)
Опытный пользователь операционной системы (ОС) GNU Linux не раз сталкивался со случаями когда простая команда с небольшой ошибкой могла загрузить микропроцессор под самую завязку. Этим мы и воспользуемся, только у нас будет все продумано и с конкретной целью.
Сперва рассмотри достаточно интересную связку из двух отдельных команд, соединенных через конвейер (символ «|», перенаправление ввода-вывода).
Ее суть: читаем случайные данные из файла «/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», которая должна быть знакома почти каждому системному администратору. Если у вас она не установлена то исправить ситуацию можно командой:
Для запуска этого консольного монитора ресурсов используем одноименную команду:
Ниже приведен пример работы этого консольного монитора ресурсов, загружены два ядра все той же связкой из команд dd и bzip2.
Рис. 2. Мониторинг нагрузки двух ядер CPU в GNU Linux используя HTOP.
Что же означают в HTOP красные и зеленые отметки в прогресс-барах для ядер CPU? — все проще простого:
- зеленый цвет — количество ресурсов процессора, выделенные под процессы с нормальным приоритетом;
- красный цвет — ресурсы CPU, выделяемые процессам с приоритетом ядра.
О том как узнать частоту установленного микропроцессора(ров), режимы работы ядер и другую полезную информацию я писал в одной их предыдущих статей о CPU в GNU Linux.
Утилизация 100% мощности одного или нескольких ядер CPU
Для этой цели можно использовать команды, которые обрабатывают непрерывный поток данных на очень высокой скорости, без периодических колебаний нагрузки как в случае с bzip.
Скажем микропроцессору «yes». только очень много раз!
С виду простая и безобидная команда, а нагрузит она одно ядро CPU примерно на 100% и без скачков. Суть этой конструкции проста: выводим слово «yes» бесконечное количество раз и перенаправляем вывод в «черную дыру» — /dev/null.
Рис. 3. Нагружаем одно ядро CPU на 100% командой yes в GNU Linux.
Другие связки из простых команд для загрузки ЦПУ
Пример с командой «yes» — это наиболее простой и доступный способ нагрузить одно или несколько ядер центрального процессора.
Кроме того, можно поэкспериментировать и с другими командами и программами, которые по умолчанию доступны почти в каждом дистрибутиве GNU Linux.
Суть построения подобных связок из команд следующая:
- Что-то откуда-то беспрерывно считываем и перенаправляем в /dev/null;
- Выполняем бесконечный анализ данных какой-то программой или утилитой.
Следующая связка позволяет загрузить одно ядро под самый потолок:
Рис. 4. Нагружаем одно ядро CPU по максимуму на 100% командой cat в GNU Linux.
Суть команды: при помощи команды «cat» выполняем вывод бесконечного потока дынных из псевдо-устройства «/dev/zero» (генерирует нули, 000) в пустоту «/dev/null»;
Как видим процесс у нас выполняется с высоким приоритетом (приоритет ядра ОС) и требует для выполнения всю вычислительную мощность одного процессорного ядра.
Для считывания данных из файла псевдо-устройства можно использовать программу «dd».
Суть команды: с помощью программы «dd» (if — input file, of — output file) читаем поток случайных данных из /dev/urandom и отправляем их в «никуда» — /dev/null.
Результат мониторинга загрузки ядер в HTOP получим такой же как и на рисунке 4.
А теперь загрузим процессор подсчетом контрольной суммы бесконечного файла с нулями:
В htop мы сможем видеть то же то и на рисунке 3, правда плотность загрузки будет более стабильной.
Грузим CPU просчитывая MD5-сумму бесконечного потока случайных данных:
График загрузки будет идентичен тому что на рисунке 4, микропроцессор загружен процессом, который работает на уровне ядра ОС, очень высокий приоритет.
Грузим процессор на 100% используя pbzip2
В начале статьи был представлен пример с bzip2, которая поотдельности может нагрузит одно ядро микропроцессора. Существует также мультипоточная реализация данного архиватора — pbzip2.
Установить pbzip2 можно командой:
Для нагрузки всех доступных ресурсов процессора достаточно запустить следующую команду:
Вместо источника потока «/dev/zero» можно использовать «/dev/urandom» или же собрать еще более простую конструкцию:
Stress — пакет комплексных нагрузочных тестов ПК
О применении утилиты «stress» в GNU Linux я уже писал в статье о самостоятельном ремонте ПК. Там она использовалась в связке с другими программами для получения такого себе нагрузочного стресс-набора на подобии AIDA64 под Windows.
Этой программой можно нагрузить сразу все доступные ядра CPU или же указать конкретно сколько ядер должны трудиться в поте лица. Для установки пакета ‘stress’ достаточно выполнить команду:
Итак, запускаем программу с указанием загрузить 4 ядра микропроцессора:
Результаты производительности приведены ниже.
Рис. 5. Нагружаем все ядра CPU по максимуму на 100% командой stress в GNU Linux.
Рис. 6. Смотрим результат работы программы stress в htop.
В заключение
Как видим, нагрузить отдельное ядро процессора или же несколько ядер даже без установки специального программного обеспечения в GNU Linux — задача вполне реальная. Каждый может выбрать себе связку команд, которую легко запомнить и использовать. К тому же, строить подобные связки зная принцип их работы можно самостоятельно буквально на лету.
Но все же, установив небольшой программный пакет «stress» можно решить задачу комплексно и с дополнительными возможностями. Еще для нагрузки и тестов Linux системы можно использовать мощный комбайн «phoronix-test-suite», который придется ставить отдельно (в репозитории Debian его нет), но это уже другая история.
Источник