Задача — протестировать новый физический сервер, на котором предварительно установлена Ubuntu 22.04. Рассмотрим ниже решение данной задачи.
ИНФРАСТРУКТУРА
Имеем Bare-metal сервер с доступом через IMPI\SSH или напрямую. Тестировать можно и виртуальный сервер, для понимания выделенных лимитов. Установлена ОС Linux, в данном примере рассмотрим работу с ОС Ubuntu 22.04.
Тестирование выполняется с использования ПО Stress-ng. Стресс-тестирование удобно использовать и для облачных и для физических серверов. Если вы работаете в облаках, вы сможете понять реальную пропускную способность узла. Если разворачиваете систему на физическом железе — сможете убедиться, что с железом все в порядке.
Stress-ng — специализированная консольная утилита для проведения нагрузочного стресс-тестирования аппаратного обеспечения различными способами. Возможности, которыми обладает утилита stress-ng, довольно широки. Об этом свидетельствует огромное количество всевозможных опций, которыми её наделили разработчики. Но ключевой особенностью stress-ng является то, что это полноценный инструмент со встроенными тестами. В отличие от многих других аналогов, при выполнении теста не производится обращений к сторонним и/или внешним ресурсам. Таким образом, stress-ng абсолютно самодостаточна.
УСТАНОВКА
Утилита доступна практически в любом дистрибутиве Linux и находится в стандартном репозитории, устанавливается с помощью системы управления пакетами дистрибутива. Например, в Ubuntu:
sudo apt-get install stress-ng
ТЕСТИРОВАНИЕ ПРОЦЕССОРА
Для подавляющего большинства ситуаций классическим примером стресс-теста можно использовать тест, выполняемый следующей командой:
stress-ng --cpu 32 --sequential 8 --timeout 60s --metrics-brief
В данном тесте задействованы 32 потока для тестирования 32-поточного процессора. Количество потоков следует задавать в соответствии со спецификацией используемого процессора. В этом тесте stress-ng выполнит разные тесты из группы CPU в 32 потока, каждый длительностью в 60 секунд. Для тестирования будут последовательно использованы различные методы, описаны в документации к ПО. Например: математические операции, сортировки, шифрование, сжатие, поиск, работа со строками и т.п.
Статистика будет включать название теста и цифры по скорости выполнения операций. Абсолютные величины особого значения не имеют. Однако их стоит сравнивать с цифрами серверов аналогичной конфигурации. Особенно цифры в колонках bogo ops.
ТЕСТИРОВАНИЕ ОПЕРАТИВНОЙ ПАМЯТИ
Для оперативной памяти есть группа тестов, куда входят операции выделения, копирования и очистки памяти. Для проведения стресс-тест памяти выполним команду:
stress-ng --class memory --sequential 8 --timeout 60s --metrics-brief
Во время этого теста будем наблюдать другую картинку — большое количество оперативной памяти (и свопа) будет занято. После выполнения теста получим отчет проверки приблизительно следующего вида:
Упрощенный вариант запуска теста, предопределяем способ тестирования, объем данных и время работы.
stress-ng --vm 2 --vm-bytes 1G --timeout 60s
- vm - тип тестирования памяти.
- vm-bytes - объем данных для выполнения тестирования.
- timeout - длительность тестирования.
ТЕСТИРОВАНИЕ ДИСКОВОЙ ПОДСИСТЕМЫ
В stress-ng существует две группу тестов, которые стоит выполнить. Сначала – группа тестирования низкого уровня I/O устройств:
stress-ng --class io --sequential 8 --timeout 60s --metrics-brief
Далее необходимо запустить стресс-тест файловой системы. Он включает создание/удаление файлов и папок, перемещение по дереву файлов, создание ссылок, блокировки, переименование и т.п.
stress-ng --class filesystem --sequential 8 --timeout 60s --metrics-brief
КОМПЛЕКСНОЕ ТЕСТИРОВАНИЕ
Если необходимо провести комплексное стресс-тестирование, можно задействовать работу нескольких основных подсистем вместе одной командой:
stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
Эта команда запустит тест для CPU в 4 потока, тест виртуальной памяти с размещением в ней одного гигабайта данных, а также 4 потока для тестирования операций ввода/вывода.
Что бы запустить тестирование всего «железа», используется команда:
stress-ng --sequential 0 --timeout 60s --metrics-brief
Эта команда запустит все тесты. После выполнения результат будет выведен в консоль. Во время выполнения команды сервер не нагружать другой работой.
Нужна помощь? Администрирование физических серверов мы осуществляем в рамках услуги администрирование серверов. Нагрузочное тестирование серверов, включая кластеры k8s мы осуществляем в рамках DevOps-услуг.