Стресс-тестирование серверов с помощью stress-ng

Стресс-тестирование удобно использовать и для облачных и для физических серверов. Если вы работаете в облаках, вы сможете понять реальную пропускную способность узла. Если разворачиваете систему на физическом железе — сможете убедиться, что с железом все в порядке.

Стресс-тест позволяет сгенерировать нагрузку на все ключевые подсистемы сервера. Это дает возможность убедиться, что все компоненты работают нормально.

Инструменты для стресс-тестов

Инструментов для стресс тестирования есть целая куча, мы остановились на stress-ng (мы используем Ubuntu в качестве ОСи).

Обратите внимание, что стресс-тест — это внутренний тест. В отличие от инструментов нагрузочного тестирования, например ab, стресс-тесты не заключаются в генерации запросов к внешним сервисам.

Инструмент устанавливается из пакетов:

Для запуска стресс-теста необходимо выбрать тип теста и указать его параметры.

Тестирование CPU

Прежде всего мы захотим проверить работу процессора.

# проводим тест процессора в 8 потоков

В этом тесте stress-ng выполнит разные тесты из группы cpu в 8 потоков (т.к. у нас 8 ядер), каждый длительностью в 60 секунд. Для тестирования будут последовательно использованы различные методы (например, подсчет общего наибольшего делителя или функции Аккермана). Будут выполняться не только математические операции, а и сортировки, шифрование, сжатие, поиск, работа со строками и т.п.

Во время тестов все ядра будут максимально загружены (результат htop):

После теста мы увидим статистику выполнения всех 22х тестов процессора:

# показатели после выполнения теста

Статистика будет включать название теста и цифры по скорости выполнения операций. Абсолютные величины особого значения не имеют. Однако их стоит сравнивать с цифрами серверов аналогичной конфигурации. Особенно цифры в колонках bogo ops/s.

Тестирование оперативной памяти

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

# группа тестов для оперативной памяти

Во время этого теста будем наблюдать другую картинку — большое количество оперативной памяти (и свопа) будет занято:

 

После окончания увидим резюме пройденных тестов:

# показатели после выполнения теста

Тестирование дисков

Тут есть две группы тестов, которые стоит выполнить. Сначала — группа тестирования низкого уровня I/O устройств:

Эта группа тестов включает создание/удаление файлов, запись блоков в файлы и синхронизацию данных в файлах с диском. Результат работы тестов:

Кроме этого имеет смысл запустить стресс-тест файловой системы. Он включает создание/удаление файлов и папок, перемещение по дереву файлов, создание ссылок, блокировки, переименование и т.п.

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

# Покажет статистику работы дисков за последние 5 секунд

Результат выполнения тестов файловой системы:

TL;DR

Используйте инструменты стресс-тестирования, чтобы проверить работу железа и понять его реальную производительность. stress-ng — удобный инструмент для тестирования серверов на Ubuntu. Если нужно просто выполнить все тесты, используйте команду:

# Выполнит более 40 различных стресс-тестов сервера

Во время выполнения тестов комп лучше не трогать. После выполнения статистика будет выведена прямо в консоли.

Источник