Как бенчмаркировать сервер: CPU, память, диск и сеть

Если вам нужен виртуальный приватный сервер (VPS) или выделенная машина, выбор обширен. Рынок меняется часто, и нет единственного «лучшего» провайдера для всех задач. Кому-то важна скорость диска, кому‑то — производительность CPU. Бенчмарки помогают измерить характеристики и подобрать оптимальное предложение именно для вашего рабочего профиля.
В этом материале вы получите готовые команды и методологию для базовых тестов дисковой подсистемы, CPU/памяти и сетевой пропускной способности. Также здесь есть контрольные списки, критерии приёмки, альтернативные подходы и пример плана тестирования.
Небольшое вступление о тестах производительности
Бенчмарки бывают целевые и общие. Целевые тесты адаптируют параметры под конкретное приложение (например, база данных или файловый сервер). Общие тесты полезны для сравнения поставщиков, потому что они запускаются с одинаковыми параметрами и дают сопоставимые цифровые показатели. Важно: общие тесты могут не «высосать» весь потенциал оборудования, но они подходят для честного сравнения.
Определение: бенчмарк — автоматизированный тест, который измеряет производительность части системы (диск, CPU, память, сеть) при заранее заданных условиях.
Требования и подготовка
- Используйте одну и ту же версию ОС на всех тестируемых серверах. В оригинальном сценарии использовали Ubuntu 18.04 LTS — это хороший общий старт. Можно выбрать другую версию, но держите её одинаковой на всех платформах.
- Повторяйте каждый тест минимум дважды. Нередки кратковременные колебания у облачных провайдеров. Повторные прогоны выявляют нестабильность.
- Если вы тестируете не под root, добавьте sudo перед apt и другими командами.
- Применяйте идентичные параметры запусков на всех серверах. Иначе сравнение будет неверным.
Важное: если провайдер даёт сильно нестабильные результаты между запусками — это признак перегруженности хоста или слабой изоляции виртуальных машин. Такой провайдер вряд ли подойдёт для стабильных нагрузок.
Бенчмарк дисковой подсистемы
Сначала установим инструмент fio, универсальный тестер ввода-вывода.
apt update && apt install fioЕсли пакет не найден, включите репозиторий universe:
apt install software-properties-common && add-apt-repository universe
apt update && apt install fioПоследовательное чтение показывает, какую максимальную скорость чтения демонстрирует диск и файловая система при последовательном доступе. Запуск для общего сравнения:
fio --name=seqread --readwrite=read --direct=1 --ioengine=libaio --bs=1M --size=2000MЕсли тест заканчивается быстрее ~20 секунд (часто на SSD), увеличьте объём:
fio --name=seqread --readwrite=read --direct=1 --ioengine=libaio --bs=1M --size=8000MГлавное поле в выводе — READ: bw (bandwidth). На иллюстрации ниже выделены эти значения.

Для последовательной записи выполните:
fio --name=seqwrite --readwrite=write --direct=1 --ioengine=libaio --bs=1M --size=2000MДля стресс‑теста случайного чтения/записи используйте многопоточный сценарий с маленьким блоком:
fio --name=randrw --readwrite=randrw --direct=1 --ioengine=libaio --bs=4k --size=200M --group_reporting --numjobs=8Если тест проходит очень быстро — увеличьте --size. Для случайных операций важнее не пропускная способность, а IOPS; в выводе смотрите read: IOPS и write: IOPS.

Практическая интерпретация: высокие значения последовательного чтения/записи важны для больших файлов и CDN‑подобных задач; высокие IOPS — для баз данных и интенсивных транзакционных нагрузок.
Совет: замеряйте дисковую подсистему под реальной нагрузкой вашего приложения, если это возможно (например, с такими же файловыми размерами и шаблоном доступа).
Бенчмарк CPU и памяти
Geekbench — удобный кроссплатформенный тест. Скачайте архив, заменив ссылку на актуальную версию.
wget http://cdn.geekbench.com/Geekbench-4.3.3-Linux.tar.gzРаспакуйте архив:
tar -xzvf *.tar.gz
Перейдите в каталог с распакованной версией (имя папки соответствует версии):
cd Geekbench-4.3.3-Linux
ls
Запустите исполняемый файл (имя может измениться в новых версиях):
./geekbench4Тест займёт время. По завершении вы получите ссылку на результаты в браузере или в консоли.

Интерпретация: Geekbench даёт обобщённые баллы для CPU и памяти. Для важных для вас подзадач лучше использовать и целевые бенчмарки (например, компиляция кода, параллельные вычисления, контейнерные сценарии).
Бенчмарк сетевой пропускной способности
Установите клиент speedtest:
apt install speedtest-cliЗапустите тест:
speedtest
Утилита обычно подбирает ближайший сервер автоматически. Если определение местоположения не сработало, можно вручную найти серверы в вашей стране:
speedtest --list | grep -i germanyВыберите нужный номер из списка и запустите тест с указанием сервера:
speedtest --server 4462Важно: некоторые тестовые сервера могут быть перегружены, и результаты будут занижены. Попробуйте несколько серверов для верификации.
Мини‑методология тестирования (пошагово)
- Выберите ОС и установите одинаковую версию на всех тестируемых хостах.
- Зафиксируйте версии всех инструментов (fio, geekbench, speedtest-cli).
- Задокументируйте конфигурацию машины: CPU (ядра, частота), RAM, тип диска (HDD/SSD/NVMe), сеть (виртуальная/прямая), регион.
- Выполните каждый тест минимум 2 раза. Снимите среднее и разброс.
- Сравните результаты и проанализируйте соответствие вашим рабочим нагрузкам.
- Для важных решений повторите тесты через неделю — провайдеры могут обновлять оборудование.
Чек‑лист перед запуском
- Одинаковая версия ОС на всех серверах
- Обновлены пакеты: apt update && apt upgrade
- Установлены инструменты: fio, geekbench, speedtest-cli
- Отключены фоновые задания, которые могут повлиять на результаты
- Фиксация времени запуска и конфигурации машины
- Резервные прогоны для оценки стабильности
Критерии приёмки
- Кандидат принимается, если средние результаты по ключевым метрикам в пределах ожидаемого SLA для вашего приложения.
- Отвергнуть провайдера, если разница между прогоном 1 и прогоном 2 превышает заранее заданный порог нестабильности (например, 20% — на ваше усмотрение).
- Для диска: минимальная IOPS/throughput соответствует требованиям базы данных в пиковые часы.
Примечание: пороговые значения определяются вашими внутренними требованиями к SLA.
Когда базовые бенчмарки не подходят
- При специализированных задачах (GPU‑рендеринг, распределённые in‑memory хранилища) нужны целевые тесты.
- Если инфраструктура использует шифрование диска на лету, стандартные fio‑тесты могут не отражать реальную производительность приложения.
- При сильно вариабельной нагрузке в облаке общие тесты дают лишь приближённую картину; лучше проводить нагрузочные тесты ваших приложений.
Альтернативные подходы
- Нагрузочные тесты на уровне приложения (например, для веб‑серверов используйте wrk, ab, JMeter).
- Для БД — специализированные инструменты: sysbench, pgbench.
- Для контейнерных сред — тесты с моделированием множества контейнеров и сетевых политик.
Ролевые чек‑листы
Администратор:
- Проверить доступы, установить инструменты, собрать журналы.
Разработчик:
- Предоставить реальные сценарии I/O и сетевых запросов для точного моделирования.
SRE/DevOps:
- Автоматизировать прогоны и сбор метрик (скрипты, CI‑задачи), сохранять результаты в репозитории.
Короткая шпаргалка по командам
apt update && apt install fio
fio --name=seqread --readwrite=read --direct=1 --ioengine=libaio --bs=1M --size=8000M
fio --name=randrw --readwrite=randrw --direct=1 --ioengine=libaio --bs=4k --size=200M --group_reporting --numjobs=8
wget http://cdn.geekbench.com/Geekbench-4.3.3-Linux.tar.gz
tar -xzvf *.tar.gz
cd Geekbench-4.3.3-Linux
./geekbench4
apt install speedtest-cli
speedtestПример плана тестирования (Timeline)
- День 0: подготовка — выбор образа ОС, установка инструментов, документирование конфигурации.
- День 1: первые прогоны диска, CPU, сети; базовые измерения и логирование.
- День 2: повторные прогоны, проверка стабильности, сравнение с предыдущими данными.
- День 3: нагрузочные тесты приложений (если необходимо).
- День 4: анализ, отчёт и рекомендация по выбору провайдера.
Привычные ошибки и как их избежать
- Запускать тесты в часы пик провайдера — сравнения получатся неверными. Планируйте тесты в одинаковое время для всех серверов.
- Не учитывать тип виртуального диска: local SSD vs network block storage дают разные профили.
- Игнорировать вариативность — всегда делать несколько запусков.
Небольшой словарь (одна строка)
- IOPS — операции ввода‑вывода в секунду.
- BW (bandwidth) — пропускная способность, обычно в MB/s.
- fio — инструмент для тестирования дисковой подсистемы.
- Geekbench — кроссплатформенный тест CPU/памяти.
- speedtest-cli — тест сетевой пропускной способности.
Принятие решения: простая логика
flowchart TD
A[Начало: определите критичные метрики] --> B{Нужна ли низкая задержка диска?}
B -- Да --> C[Оценивайте IOPS и латентность fio]
B -- Нет --> D{Нужна ли высокая последовательная пропускная способность?}
D -- Да --> E[Оценивайте seq read/write fio]
D -- Нет --> F[Оценивайте CPU и сеть через Geekbench и speedtest]
C --> G[Сравните результаты, выберите провайдера]
E --> G
F --> G
G --> H[Принятие: согласование с требованиями и SLA]Итоги
Это практическое руководство даёт базу для честных и воспроизводимых сравнений серверов. Используйте одинаковые параметры и среду, повторяйте прогоны, документируйте конфигурации. Для принятия решения сравнивайте те метрики, которые действительно важны для ваших приложений: IOPS для баз данных, пропускная способность для файловых хранилищ, CPU‑баллы для вычислительных задач и сеть для клиент‑ориентированных сервисов.
Ключевые шаги: подготовка окружения, запуск fio/geekbench/speedtest, повторные прогоны, анализ и принятие решения.
Сводка:
- Бенчмарки полезны для сравнения провайдеров и выбора оптимальной конфигурации.
- Одинаковые параметры запуска — обязательное условие корректного сравнения.
- Повторяйте тесты и фиксируйте нестабильность как фактор отказа провайдера.