- Стресс-тестирование систем в Linux – утилита stress-ng
- Основные особенности и возможности stress-ng
- Синтаксис stress-ng
- Основные опции stress-ng
- Тестирование процессора
- Тестирование дисковой подсистемы
- Тестирование памяти
- Комплексное тестирование
- Заключение
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Как провести стресс-тестирование вашей системы Linux
- Создаем циклы своими руками
- Специализированные инструменты для добавления нагрузки
- Stress Test CPU and Memory (VM) On a Linux / Unix With Stress-ng
- Tools To Stress Test CPU and Memory (VM) On a Linux / Unix
- Getting started with stress tool on Linux
- Install stress package on a Linux
- Install stress on a CentOS, RHEL, and Fedora Linux
- Install stress on a Debian and Ubuntu Linux
- Install stress on a FreeBSD Unix system
- Install stress on a OpenBSD Unix system
- How do I use stress tool on Linux?
- Getting started with stress-ng on Linux and Unix
- Install stress-ng on a Linux or Unix-like systems
- How do I use the stress-ng tool on Linux?
- Examples
- Unix / Linux cpu stress test
- Unix / Linux cpu stress test
- Unix / Linux memory stress test
- Putting it all together
- Should I run stess-ng with root access?
- Conclusion
- References
Стресс-тестирование систем в Linux – утилита stress-ng
Для организации и проведения нагрузочного стресс-тестирования в Linux-системах существует утилита stress-ng. С помощью неё несложно сгенерировать реальную рабочую нагрузку на тестируемые подсистемы и, соответственно, оценить её возможности. Утилита, традиционно для Linux, предоставляет для работы интерфейс командной строки. Однако, это ни в коей мере не делает её неудобной. Со своими задачами она справляется на «отлично». В данной статье приведены инструкции, отражающие основы работы с утилитой stress-ng для некоторых самых распространённых ситуаций в стресс-тестировании систем на основе Linux.
Основные особенности и возможности stress-ng
Возможности, которыми обладает утилита stress-ng, довольно широки. Об этом свидетельствует огромное количество всевозможных опций, которыми её наделили разработчики.
Но ключевой особенностью stress-ng является то, что это полноценный инструмент со встроенными тестами. В отличие от многих других аналогов, при выполнении теста не производится обращений к сторонним и/или внешним ресурсам. Таким образом, stress-ng абсолютно самодостаточна. Практически в любом дистрибутиве Linux она доступна в стандартном репозитории и устанавливается с помощью системы управления пакетами (СУП) дистрибутива. Например, в Ubuntu:
Кроме всего прочего, stress-ng в своём составе очень качественные тесты для тестирования процессоров, в совокупности позволяющие наиболее полно сгенерировать нагрузку на CPU, используя такие методы как целочисленные и с плавающей запятой, битовые операции, комплексные вычисления и т. д.
Синтаксис stress-ng
Как уже было отмечено, stress-ng имеет настолько огромный набор опций, что в рамках данной статьи целесообразнее остановиться лишь на основных, позволяющих протестировать все основные подсистемы: CPU, виртуальную память, а также дисковую подсистему.
Синтаксис stress-ng довольно прост:
Задаёт конкретный метод тестирования виртуальной памяти. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Подробнее в официальном руководстве по команде man stress-ng.
—vm-method mЗадаёт конкретный метод тестирования виртуальной памяти. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Подробнее в официальном руководстве по команде man stress-ng.
Основные опции stress-ng
В таблице ниже указаны основные опции утилиты
Опция | Значение |
—class name | Задаёт тип теста. В качестве name указывается например cpu, memory, vm, io и другие. |
—metrics | Указывает, что по завершению теста должна быть выведена статистика основных метрик, отражающих поведение системы во время теста. |
—metrics-brief | То же, что и —metrics, но выводит ненулевые метрики. |
—cpu-method method | Задаёт метод генерации нагрузки для процессора. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Более подробно об этой опции можно узнать, выполнив команду man stress-ng. |
—cpu N | Запускает для стресс-теста процессора N стрессоров для каждого его потока. |
—cpu-ops N | Указывает, через какое количество bogo-операций необходимо остановить тест CPU. |
—hdd-ops N | Указывает, через какое количество bogo-операций необходимо остановить тест жёстких дисков. |
—hdd-bytes N | Записывает N байт для каждого процесса работы с жёстким диском. По-умолчанию равно 1 Гб. |
—vm N | Запускает для стресс-теста виртуальной памяти N стрессоров. |
—vm-bytes N | Размещает N байт для каждого процесса работы с памятью. По-умолчанию равно 256 Мб. Объём также может быть указан в процентах от общего объёма виртуальной памяти в системе. Значения можно задавать в бфйтах, килобайтах, мегабайтах и гигабайтах, используя суффиксы b, k, m и g соответственно. |
—sequential N | Задает N количество потоков для выполнения тестов, если N не указано или равно 0, то количество потоков равно числу процессоров. |
Для удобства и быстрого составления необходимых тестов рекомендуется пользоваться также некоторыми вспомогательными опциями, например:
- что бы запустить несколько экземпляров каждого стресс-теста используется опция —all N, где N – необходимое количество экземпляров;
- для установки таймаута, т. е. времени продолжительности стресс-теста используется опция —timeout.
Тестирование процессора
Для подавляющего большинства ситуаций классическим примером стресс-теста можно использовать тест, выполняемый следующей командой:
В данном тесте задействованы 16 потоков для тестирования 16-поточного процессора. Вывод результатов может быть следующим:
Естественно количество потоков следует задавать в соответствии со спецификацией используемого процессора.
Тестирование дисковой подсистемы
Для проведения стресс-тестирования накопителей, таких как жёсткие диски можно для начала провести низкоуровневый тест ввода вывода
Вывод команды будет следующим
Еще один стресс-тест дисков можно выполнить командой
В данном случае будет запущено 5 стрессоров для жёстких дисков, которые будут остановлены по завершении 100 тыс. bogo-операций.
Во время тестирования можно смотреть загрузку командой iostat
Тестирование памяти
Что бы провести стресс-тест памяти используйте команду
После окончания мы получим результат проверки приблизительно следующего вида
Комплексное тестирование
Если необходимо провести комплексное стресс-тестирование, можно задействовать работу нескольких основных подсистем вместе одной командой:
Эта команда запустит тест для CPU в 8 потоков, тест виртуальной памяти с размещением в ней одного гигабайта данных, а также 4 стрессора для тестирования операций ввода/вывода.
Что бы запустить тестирование всего «железа», используется команда
Эта команда запустит все тесты. После выполнения результат будет выведен в консоль. Во время выполнения команды лучше компьютер не трогать
Заключение
В заключение стоит ещё раз отметить, что утилита stress-ng по своим возможностям очень универсальна и позволяет качественно протестировать любую систему. Приведенные выше примеры охватывают наиболее распространённые ситуации по нагрузочному тестированию Linux-систем. Для проведения специфичных или более сложных тестов рекомендуется обращаться к официальному руководству по использованию утилиты, доступному по команде man stress-ng.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Как провести стресс-тестирование вашей системы Linux
4 минуты чтения
Повышение нагрузки на серверы Linux может быть хорошей идеей, если вы хотите увидеть, насколько хорошо они работают, когда они загружены. В этой статье мы рассмотрим некоторые инструменты, которые помогут вам нагрузить сервер и оценить результаты.
Для чего вам необходимо подвергать свою систему Linux нагрузке? Потому что иногда вам может потребоваться узнать, как система будет вести себя, когда она находится под большим давлением из-за большого количества запущенных процессов, интенсивного сетевого трафика, чрезмерного использования памяти и т. д. Этот вид тестирования позволяет убедиться, что система готова к использованию.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Если вам нужно спрогнозировать, сколько времени потребуется приложениям для ответа и какие процессы могут выйти из строя или работать медленно под большой нагрузкой, проведение стресс-тестирования заранее является очень хорошей идеей.
К счастью для тех, кому нужно знать, как система Linux отреагирует на нагрузку, есть несколько полезных методов, которые вы можете использовать, и есть инструменты, которые вы можете использовать, чтобы упростить этот процесс. В этой статье мы рассмотрим несколько вариантов.
Создаем циклы своими руками
Данный первый метод предполагает запуск некоторых циклов в командной строке и наблюдение за тем, как они влияют на систему. Этот метод нагружает ЦП, значительно увеличивая нагрузку. Результаты можно легко увидеть с помощью команды uptime или аналогичных команд.
В приведенной ниже примере мы начинаем четыре бесконечных цикла. Вы можете увеличить количество циклов, добавляя цифры или используя выражение bash , например <1..6>вместо «1 2 3 4».
В примере выше, команда, запускает четыре бесконечных цикла в фоновом режиме.
В этом случае были запущены задания 1-4. Отображаются как номера заданий, так и идентификаторы процессов.
Чтобы увидеть влияние на средние значения нагрузки, используйте команду, подобную показанной ниже. В этом случае команда uptime запускается каждые 30 секунд:
Если вы собираетесь периодически запускать подобные тесты, вы можете поместить команду цикла в скрипт:
В выходных данных вы можете увидеть, как средние значения нагрузки увеличиваются, а затем снова начинают снижаться после завершения циклов.
Поскольку показанные нагрузки представляют собой средние значения за 1, 5 и 15 минут, потребуется некоторое время, чтобы значения вернулись к нормальным для системы значениям.
Чтобы остановить циклы, выполните команду kill , подобную приведенной ниже — при условии, что номера заданий равны 1-4, как было показано ранее в этой статье. Если вы не уверены, используйте команду jobs , чтобы проверить ID.
Специализированные инструменты для добавления нагрузки
Другой способ создать системный стресс — это использовать инструмент, специально созданный для того, чтобы нагружать систему за вас. Один из них называется stress и может воздействовать на систему разными способами. Стресс-инструмент — это генератор рабочей нагрузки, который обеспечивает стресс-тесты ЦП, памяти и I/O.
С параметром —cpu команда stress использует функцию извлечения квадратного корня, чтобы заставить ЦП усердно работать. Чем больше указано количество ЦП, тем быстрее будет нарастать нагрузка.
Второй сценарий watch-it (watch-it-2) может использоваться для оценки влияния на использование системной памяти. Обратите внимание, что он использует команду free , чтобы увидеть эффект стресса.
Начало и наблюдение за стрессом:
Чем больше ЦП указано в командной строке, тем быстрее будет нарастать нагрузка.
Команда stress также может вызвать нагрузку на систему, добавив I/O и загрузку памяти с помощью параметров —io (input/output) и —vm (memory).
В следующем примере выполняется команда для добавления нагрузки на память, а затем запускается сценарий watch-it-2 :
Другой вариант для стресса — использовать параметр —io , чтобы добавить в систему действия по вводу/выводу. В этом случае вы должны использовать такую команду:
После чего вы можете наблюдать за стрессовым I/O с помощью iotop . Обратите внимание, что iotop требует привилегий root .
stress — это лишь один из множества инструментов для добавления нагрузки в систему.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Stress Test CPU and Memory (VM) On a Linux / Unix With Stress-ng
A sysadmin can try out any one of the following tool to put given subsytems under a specified load. One can stress test CPU on Linux other subsystem. Instances in which this is useful include those in which a system administrator wishes to perform tuning activities, a kernel or libc programmer wishes to evaluate denial of service possibilities, test your systems entirely on high load and monitoring the health and more. This is also useful for sysadmin, system builders, and overclockers who want to test their hardware under high load and monitor stability and thermal environment.
Tutorial details | |
---|---|
Difficulty level | Advanced |
Root privileges | Yes |
Requirements | stress and stress-ng |
Est. reading time | 8 minutes |
Tools To Stress Test CPU and Memory (VM) On a Linux / Unix
- stress : It is a simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system. It is written in C, and is free software licensed under the GPLv2. It is not a benchmark, but is rather a tool designed
- stress-ng : It is an updated version of stress tool and it will stress test a server for the following features:
- CPU compute
- Cache thrashing
- Drive stress
- I/O syncs
- VM stress
- Socket stressing
- Context switching
- Process creation and termination
- It includes over 60 different stress tests, over 50 CPU specific stress tests that exercise floating point, integer, bit manipulation and control flow, over 20 virtual memory stress tests.
Warning: Running the following tools with root privileges is recommended to avoid out of memory and other errors. Also, note that tools will stress out your server resources quickly so use the following command judiciously.
Getting started with stress tool on Linux
This program is supposed to be easy to use and recommended for new sysadmins. The tool is known to work on x86 Linux and FreeBSD/OpenBSD, powerpc AIX and Linux, SPARC Solaris, Compaq Alpha Tru64 UNIX, and many others.
Install stress package on a Linux
You can install stress as part of the Linux or Unix distribution.
Install stress on a CentOS, RHEL, and Fedora Linux
First, turn on EPEL repo and then type the following yum command to install the same:
sudo yum install stress
Sample outputs:
Fig.01: Installing stress on a RHEL/CentOS/Fedora Linux
Install stress on a Debian and Ubuntu Linux
Type the following apt-get command to install the same:
apt-get install stress
Sample outputs:
Fig.02: Install stress tool on a Debian/Ubuntu Linux
Install stress on a FreeBSD Unix system
Type the following pkg command to install the stress tool using binary method:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Fig.03: FreeBSD installing stress tool
Install stress on a OpenBSD Unix system
Type the following pkg_add command to install the stress tool using binary method:
How do I use stress tool on Linux?
First, note down the current system load averages by typing the following command:
# uptime
Next, run any one of the following command to see load on screen:
# watch uptime
OR use tload command:
# tload
The syntax is as follows:
For example, a load average of four is imposed on the system by specifying two CPU-bound processes, one I/O-bound process, and one memory allocator process as follows:
# uptime
# stress -c 2 -i 1 -m 1 —vm-bytes 128M -t 10s
# uptime
Sample outputs:
Fig.04: A load average of four is imposed on the system
Getting started with stress-ng on Linux and Unix
The stress-ng tool will stress test a Linux computer system in various selectable ways.
Install stress-ng on a Linux or Unix-like systems
Type the following command to download stress-ng tarball using the wget command:
$ cd /tmp
$ wget http://kernel.ubuntu.com/
cking/tarballs/stress-ng/stress-ng-0.09.34.tar.xz
Untar tar ball, enter:
$ tar xvf stress-ng-0.09.34.tar.xz
Compile stress-ng, run:
$ cd stress-ng-0.09.34
$ make
Sample outputs:
You can also install it using snap command or apt-get command:
$ sudo apt install stress-ng
How do I use the stress-ng tool on Linux?
Examples
Always note down the output of uptime command before starting it:
uptime
Let us see some examples of stress-ng.
Unix / Linux cpu stress test
Let us start N workers exercising the CPU by sequentially working through all the different CPU stress methods:
uptime
stress-ng —cpu 4 —timeout 60s —metrics-brief
uptime
Unix / Linux cpu stress test
For disk start N workers continually writing, reading and removing temporary files:
stress-ng —disk 2 —timeout 60s —metrics-brief
One can pass the —io N option to the stress-ng command to commit buffer cache to disk:
stress-ng —disk 2 —io 2 —timeout 60s —metrics-brief
Unix / Linux memory stress test
Let us populate memory. Use mmap N bytes per vm worker, the default is 256MB. One can specify the size as % of total available memory or in units of Bytes, KBytes, MBytes and GBytes using the suffix b, k, m or g:
stress-ng —vm 2 —vm-bytes 1G —timeout 60s
The —vm 2 will start N workers (2 workers) continuously calling mmap/munmap and writing to the allocated memory. Note that this can cause systems to trip the kernel OOM killer on Linux systems if not enough physical memory and swap is not available.
Putting it all together
To run for 60 seconds with 4 cpu stressors, 2 io stressors and 1 vm stressor using 1GB of virtual memory, enter:
stress-ng —cpu 4 —io 2 —vm 1 —vm-bytes 1G —timeout 60s —metrics-brief
Sample outputs:
Fig.05: stress-ng in action showing Stress Test CPU and Memory (VM) On a Linux
To run 4 simultaneous instances of all the stressors sequentially one by one, each for 6 minutes and summaries with performance metrics at the end:
stress-ng —sequential 4 —timeout 6m —metrics
To run 2 FFT cpu stressors, stop after 5000 bogo operations and produce a summary just for the FFT results:
stress-ng —cpu 2 —cpu-method fft —cpu-ops 5000 —metrics-brief
To run cpu stressors on all online CPUs working through all the available CPU stressors for 2 hour:
stress-ng —cpu 0 —cpu-method all -t 2h
To run 2 instances of all the stressors for 10 minutes:
stress-ng —all 2 —timeout 10m
To run 128 stressors that are randomly chosen from all the available stressors:
stress-ng —random 128
To run 64 instances of all the different cpu stressors and verify that the computations are correct for 5 minutes with a bogo operations summary at the end:
stress-ng —cpu 64 —cpu-method all —verify -t 5m —metrics-brief
To run all the stressors one by one for 5 minutes, with the number of instances of each stressor matching the number of online CPUs:
stress-ng —sequential 0 -t 5m
To run all the stressors in the io class one by one for 1 minutes each, with 8 instances of each stressor running concurrently and show overall time utilisation statistics at the end of the run:
stress-ng —sequential 8 —class io -t 1m —times
Should I run stess-ng with root access?
From the man page:
Running stress-ng with root privileges will adjust out of memory settings on Linux systems to make the stressors unkillable in low memory situations, so use this judiciously. With the appropriate privilege, stress-ng can allow the ionice class and ionice levels to be adjusted, again, this should be used with care. However, some options do requires root privilege to alter various /sys interface controls. See stess-ng command man page for more info.
Conclusion
You just learned how to use the stess and stress-ng command to impose high CPU load on Linux and Unix-like system.
References
- Linux and Unix Test Disk I/O Performance With dd Command
- stress home page – Download source code and docs.
- stress-ng home page– Download source code and docs.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник