- Стресс-тестирование систем в Linux – утилита stress-ng
- Основные особенности и возможности stress-ng
- Синтаксис stress-ng
- Основные опции stress-ng
- Тестирование процессора
- Тестирование дисковой подсистемы
- Тестирование памяти
- Комплексное тестирование
- Заключение
- Стресс тест процессора и памяти (VM) на Linux
- Инструмент # 1: Начало работы с инструментом stress
- Установите пакет stress
- Установка на CentOS, RHEL, и Fedora Linux
- Чем длительно нагрузить CPU на полную?
Стресс-тестирование систем в 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.
Источник
Стресс тест процессора и памяти (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 , а затем введите следующую команду , чтобы установить пакет:
Источник
Чем длительно нагрузить CPU на полную?
Собственно, вопрос в заголовке. Есть ноутбук, в нем i7-4702HQ. Хочу дать ему непрерывную максимальную нагрузку чтобы посмотреть на температуру и узнать, способна ли установленная система охлаждения справится с таким режимом работы.
На ум приходит встроенный бенчмаркинг 7z или geekbench в цикле. Может запустить какую-то компиляцию?
Вангую, что не сможет.
libreoffice, llvm, qtwebengine
вот где бы светоч пригодился
install gentoo + emerge firefox libreoffice qtwebengine
Я лично в таких случаях делаю
Запустить многопоточный архиватор с максимальным сжатием из /dev/urandom
Установи кучу говно-приложений на Electron. Запусти их все. Но может не выйти, скорее всего, раньше отвалится твоя оперативка. Уйдёт в своп и всё зависнет 🙂
Если компиляция, то chromium — вот это жесть.
А так, да urandom неплохой вариант. iotop, емнип, тоже грузит одно ядро на полную
There are several options for the torture test (menu option 15).
Small FFTs (option 1) to stress the CPU
вообще-то для таких случаев есть stress — ка раз для стресс-тестирования системы. Не только для проца, умеет в рам, хдд и своп, вроде.
Странно, что никто не посоветовал.
Факториал большого числа.
Вдобавок к вышеупомянутым программам советую попробовать cpuburn.
Тесты в cpuburn однопоточные, для многоядерных процессоров нужно запускать соответствующее количество экземпляров одного и того же теста. Здесь описаны примеры: https://www.hecticgeek.com/2012/03/cpuburn-cpu-stress-test-ubuntu-linux/
Несмотря на то, что кодовая база проекта для платформы x86 не обновлялась с 2004 года (кроме баг-фиксов), всё же он может быть более полезным для стресс-теста конкретно охлаждения, чем вышеупомянутые аналоги. Он может сильнее нагрузить процессор, чем аналогичный тест, который делает лишь простую целочисленную арифметику. То есть, при одинаковой загруженности процессора в 100% его температура может отличаться в зависимости от задач, которые он решает.
Универсальные бенчмарки вроде Geekbench исполняют кучу различных тестов, обычно по очереди. Это и однопоточные операции, и многопоточные, и целочисленная арифметика, и задействование FPU и различных расширений. Но эти тесты не ставят перед собой задачу максимально нагреть процессор. Теоретически, процессор может даже немного остывать в менее затратных по электроэнергии тестах.
Да, вот конкретно на примере Geekbench 4 указаны куча тестов для CPU https://www.geekbench.com/doc/geekbench4-cpu-workloads.pdf. Но при этом там есть такая заметка:
Geekbench inserts a pause (or gap) between each workload to minimize the effect thermal issues have on workload performance.
То есть, Geekbench 4 умышленно делает паузу, чтобы дать процессору немного остыть между тестами. Именно это совсем не подходит для твоей задачи. Насколько я понял, там можно регулировать эту паузу, но я не знаю, насколько.
С другой стороны, если в Geekbench можно запустить выполнение конкретного теста в режиме нон-стоп без всяких пауз, то почему бы и нет? Там есть ряд тестов, которые используют новые расширение, новые инструкции. Возможно, один из этих тестов может оказаться наиболее «горячим» для конкретно твоего процессора.
Вернемся к cpuburn. Конечно, за 14 лет многое изменилось, в тестах cpuburn нет новых инструкций, не проводились оптимизации для новых поколений процессоров. И тем не менее, было бы интересно посмотреть, до каких предельных температур нагревают современные процессоры разные тесты.
Источник