Стресс-тестирование серверов stress-ng, sysbench, fio

Сервер после апгрейда или в пиковые нагрузки начинает «тормозить», а причина часто скрыта в перегреве, нестабильной памяти или слабых дисках. Мы проводим комплексное стресс-тестирование с помощью stress-ng, sysbench и fio, чтобы выявить скрытые дефекты до того, как они станут проблемой в production. Наша команда реализует проверку под ключ — от подбора нагрузок до анализа метрик, обеспечивая надёжную и стабильную работу вашей инфраструктуры.
Часто задаваемые вопросы

После апгрейда сервера с Intel Xeon на AMD EPYC мы обнаружили, что производительность в OLTP-бенчмарках упала на 15%. Причина — thermal throttling: старый кулер не справлялся с новым TDP, и процессор сбрасывал частоту. Стресс-тестирование помогло выявить проблему до ввода в production. Такие сценарии — не редкость: недогруженная система может скрывать дефекты охлаждения, нестабильность памяти или неоптимальные настройки дисков. В этой статье расскажем, как с помощью stress-ng, sysbench и fio провести комплексную проверку сервера и получить объективные метрики для принятия решений.

Какие инструменты и для чего?

Инструмент Назначение Ключевые метрики Типичное время теста
stress-ng Стресс CPU, памяти, I/O, планировщика bogo-ops/s, температура, throttling 1-5 минут до теплового равновесия
sysbench Бенчмарк CPU, памяти, файловой системы events/s, throughput MiB/s, latency 30-120 секунд
fio Storage benchmark (IOPS, bandwidth, latency) IOPS, BW, p99.9 latency 60-300 секунд на тест

Что такое bogo-ops/s и стоит ли на него ориентироваться?

bogo-ops/s — внутренняя метрика stress-ng, показывающая количество выполненных операций за секунду. Она полезна для относительного сравнения двух конфигураций (например, до и после замены термопасты), но не даёт абсолютного эталона. Для точных замеров используйте sysbench.

Как stress-ng выявляет thermal throttling?

stress-ng — швейцарский нож стресс-тестирования: 300+ типов стрессоров. По словам автора stress-ng Колина Иана Кинга, инструмент насчитывает более 300 стрессоров. В отличие от burnP6, он умеет нагружать конкретные инструкции процессора, вызывать конкуренцию за память и проверять thermal throttling.

# Стресс всех CPU-ядер через 60 секунд
stress-ng --cpu 0 --cpu-method matrixprod --timeout 60s --metrics-brief

# CPU + память одновременно
stress-ng --cpu 4 --vm 2 --vm-bytes 2G --timeout 120s

# Тест под thermal throttling (+ мониторинг температуры)
stress-ng --cpu 0 --timeout 300s & watch -n1 "sensors | grep 'Core|Package'"

# Стрессор для тестирования планировщика ОС
stress-ng --sched 4 --timeout 60s --metrics-brief

--cpu 0 — использовать все доступные ядра. --cpu-method matrixprod — операции с матрицами, хорошо нагружают FPU и кэши. Флаг --metrics-brief в конце выводит bogo-ops/s — не абсолютная метрика, но удобная для сравнения конфигураций.

sysbench: OLTP-нагрузка и benchmark памяти

sysbench исторически используют для MySQL/PostgreSQL benchmarking, но CPU и memory тесты тоже полезны:

# CPU тест (вычисление простых чисел)
sysbench cpu --cpu-max-prime=20000 --threads=8 run

# Memory bandwidth тест
sysbench memory --memory-block-size=1K --memory-total-size=10G \
  --memory-oper=write --threads=8 run

# Тест случайного чтения/записи файловой системы
sysbench fileio --file-total-size=10G prepare
sysbench fileio --file-total-size=10G --file-test-mode=rndrw \
  --time=120 --max-requests=0 --threads=4 run
sysbench fileio --file-total-size=10G cleanup

Вывод sysbench memory покажет memory throughput в MiB/s. Типичные значения: DDR4-3200 dual-channel дают ~40-50 GB/s теоретически, реальный sysbench показывает 20-30 GB/s в зависимости от паттерна доступа.

fio: серьёзное тестирование дисковой подсистемы

fio — стандарт для storage benchmarking. Параметров много, но главные:

# nvme-test.fio
[global]
ioengine=libaio
direct=1
numjobs=4
runtime=60
group_reporting

[seq-read]
rw=read
bs=1M
size=10G
filename=/dev/nvme0n1

[rand-4k-read]
rw=randread
bs=4k
size=4G
iodepth=32
filename=/dev/nvme0n1

[rand-4k-write]
rw=randwrite
bs=4k
size=4G
iodepth=32
filename=/dev/nvme0n1
fio nvme-test.fio 

Критичные метрики в выводе fio:

  • IOPS — для random 4K: хороший NVMe SSD даст 500k+ IOPS, SATA SSD — ~100k, HDD — 100-200
  • BW (bandwidth) — для sequential 1M: NVMe — 3-7 GB/s, SATA SSD — ~500 MB/s
  • lat (latency) — avg и p99.9: для NVMe random read p99.9 должен быть <200µs, для SATA SSD <1ms

iodepth=32 — глубина очереди. Для SSD/NVMe увеличивайте до 64-128 для максимального throughput. direct=1 — обход page cache, тестируем железо, а не кэш ОС.

Дополнительные параметры fio для глубокого анализа: для измерения задержек с высоким процентилем добавьте --lat_percentiles=1 и --percentile_list=50:90:99:99.9. Также полезен --write_lat_log для детального лога.

Как провести комплексный стресс-тест перед вводом в production?

Типичный приёмочный сценарий — три фазы:

#!/bin/bash
# Фаза 1: прогрев 10 минут под полной нагрузкой
stress-ng --cpu 0 --vm 4 --vm-bytes 1G --io 4 --timeout 600s \
  --metrics-brief 2>&1 | tee /tmp/stress-report.txt

# Фаза 2: disk I/O benchmark
fio --name=acceptance-test --ioengine=libaio --direct=1 \
  --rw=randrw --rwmixread=70 --bs=4k --numjobs=4 \
  --size=8G --runtime=120 --time_based \
  --filename=/var/lib/test-fio.dat \
  --group_reporting 2>&1 | tee /tmp/fio-report.txt

# Фаза 3: memory bandwidth
sysbench memory --memory-block-size=1M --memory-total-size=50G \
  --threads=$(nproc) run 2>&1 | tee /tmp/sysbench-report.txt

echo "Acceptance test complete. Reports in /tmp/"

Во время фазы 1 мониторим температуру CPU (sensors), throttling (dmesg | grep -i throttl), частоту ядер (cpupower frequency-info). Если сервер throttles при 80% нагрузке — проблема охлаждения, которую лучше найти сейчас.

Что входит в услугу по настройке стресс-тестирования

  • Подбор сценариев под ваше железо: CPU, RAM, диск, сеть
  • Подготовка и запуск тестов с автоматическим сбором метрик
  • Анализ результатов: выявление узких мест, сравнение с эталоном
  • Отчёт с графиками (температура, частоты, IOPS, latency)
  • Рекомендации по доработке конфигурации (если нужно)
  • Обучение вашей команды самостоятельному запуску

Типичные метрики для разных типов накопителей

Тип накопителя Random 4K IOPS Sequential 1M BW p99.9 latency (rand read)
NVMe SSD 500k+ 3-7 GB/s <200 µs
SATA SSD ~100k ~500 MB/s <1 ms
HDD 100-200 ~200 MB/s >10 ms

Сроки и стоимость

Разовое тестирование одного сервера по готовому сценарию — 2-4 часа. Разработка набора тестов и автоматизация приёмочного тестирования для парка серверов — от 1 до 2 дней. Стоимость рассчитывается индивидуально. Свяжитесь с нами для обсуждения вашего сценария — оценим проект и предложим план. За 5+ лет мы провели стресс-тестирование для 30+ инфраструктурных проектов, включая высоконагруженные системы под Kubernetes и СУБД. Стресс-тестирование помогает избежать затрат на замену оборудования на этапе эксплуатации, а экономия времени на диагностике достигает 40%.

Почему стоит заказать стресс-тестирование у нас?

Опыт с разными типами железа: NVMe, SATA SSD, HDD, NUMA, ARM. Автоматизируем процесс, чтобы можно было повторять регрессионные тесты. Гарантируем, что вы получите объективную картину производительности без «замыливания» кэшами ОС. Предоставляем детальный отчёт и консультацию по результатам. Получите консультацию — напишите нам, и мы подберём оптимальный набор тестов под вашу задачу.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142