Найти тему
EFSOL

Нагрузочное тестирование сервера на Linux

Оглавление

Задача — протестировать новый физический сервер, на котором предварительно установлена 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

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

Рисунок 1 — Проверка оперативной памяти
Рисунок 1 — Проверка оперативной памяти

Упрощенный вариант запуска теста, предопределяем способ тестирования, объем данных и время работы.

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
Рисунок 2 — Проверка дисковой подсистемы
Рисунок 2 — Проверка дисковой подсистемы

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

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-услуг.

📱 Подписаться