Все статьи
Железо

Как проверить производительность VPS: процессор, диск и сеть

Коротко

Производительность VPS проверяют четырьмя замерами: процессор - sysbench cpu в один и во все потоки, диск - fio со случайным чтением и записью блоками 4 КБ, сеть - iperf3 между своими серверами, перегрузку узла - колонка st (steal time) в vmstat. Сравнивать результаты имеет смысл только между серверами, проверенными одними и теми же командами.

Главное
  • Скорость одного ядра VPS показывает sysbench cpu --threads=1 run, суммарную мощность всех vCPU - тот же тест с --threads=$(nproc); главная цифра - events per second.
  • Скорость диска VPS проверяют утилитой fio на тестовом файле: случайные чтение и запись блоками 4 КБ дают IOPS и задержку, последовательное чтение блоками 1 МБ - пропускную способность в МБ/с.
  • Пропускную способность сети между серверами честнее всего мерить iperf3 между двумя своими машинами: публичные speedtest зависят от загрузки чужого сервера и маршрута до него.
  • Steal time (st в top и vmstat) - доля времени, когда виртуальный процессор ждал, пока гипервизор обслужит других; стабильно высокий steal под нагрузкой - признак перегруженного узла.
  • Результаты бенчмарка VPS сравнимы только при одинаковых командах и версиях программ: прогоняйте тесты несколько раз и в разное время суток.

Шаг 1. Узнайте, что внутри сервера

Прежде чем мерить, проверьте, что вы получили то, за что платите: модель процессора и число vCPU, объём памяти и диска. Пять стандартных команд есть в любом Linux:

bash
lscpu
nproc
free -h
lsblk
df -h
  • lscpu - модель процессора (Model name), число процессоров (CPU(s)), флаги инструкций вроде avx2 и avx512f, тип виртуализации (Hypervisor vendor).
  • nproc - сколько процессоров доступно системе; на VPS это число vCPU в тарифе.
  • free -h - память: total - весь объём, available - сколько ещё могут занять программы.
  • lsblk и df -h - диски, разделы и свободное место. Внутри виртуальной машины диск обычно называется vda или sda, даже если физически это NVMe.

Шаг 2. Процессор: sysbench в один и во все потоки

sysbench cpu считает простые числа и показывает, сколько таких заданий процессор выполняет в секунду - строка events per second. Запустите тест дважды: в один поток, чтобы увидеть скорость одного ядра, и во все потоки, чтобы увидеть мощность всех vCPU.

bash
sudo apt update
sudo apt install -y sysbench
# один поток: скорость одного ядра
sysbench cpu --threads=1 --time=10 run
# все потоки: суммарная мощность всех vCPU
sysbench cpu --threads=$(nproc) --time=10 run

Однопоточный результат важнее для сайтов, ботов, игровых серверов и баз данных: один запрос выполняется на одном ядре. Многопоточный результат должен расти примерно пропорционально числу vCPU; если на 4 vCPU он почти не больше однопоточного, проверьте steal time (шаг 5) - скорее всего, узел перегружен. Почему частота на ядро так важна, разобрано в сравнении AMD Ryzen 9 5950X и 9950X.

Шаг 3. Диск: fio

fio - стандартная утилита для тестов дисков. Три замера ниже создают файл fio-test размером 1 ГБ в домашнем каталоге и 30 секунд читают и пишут его. Флаг --direct=1 отключает кэш операционной системы, чтобы мерился диск, а не память; --bs - размер блока, --iodepth - сколько запросов держится в очереди одновременно.

bash
sudo apt install -y fio
cd ~
# случайное чтение блоками 4 КБ
fio --name=randread --filename=fio-test --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=64 --runtime=30 --time_based --group_reporting
# случайная запись блоками 4 КБ
fio --name=randwrite --filename=fio-test --size=1G --direct=1 --ioengine=libaio --rw=randwrite --bs=4k --iodepth=64 --runtime=30 --time_based --group_reporting
# последовательное чтение блоками 1 МБ
fio --name=seqread --filename=fio-test --size=1G --direct=1 --ioengine=libaio --rw=read --bs=1M --iodepth=16 --runtime=30 --time_based --group_reporting
# удалите тестовый файл
rm fio-test

В выводе смотрите на IOPS= (операций в секунду), BW= (пропускная способность) и задержку clat - её перцентили показывают, сколько ждали самые медленные запросы. Для баз данных и сборки проектов важнее IOPS и задержка на 4 КБ, для бэкапов и раздачи файлов - последовательная скорость. Чем NVMe отличается от SATA SSD по этим цифрам - в статье NVMe, SATA SSD и HDD.

Шаг 4. Сеть: iperf3 между своими серверами

iperf3 измеряет пропускную способность канала между двумя машинами, которые вы контролируете. Один сервер принимает (-s), второй передаёт (-c); флаг -R меняет направление. Если установщик спросит, запускать ли iperf3 демоном, ответьте «No».

bash
sudo apt install -y iperf3
# на сервере A: временно пустить сервер B на порт 5201 и запустить приём
sudo ufw allow from IP_СЕРВЕРА_B to any port 5201 proto tcp
iperf3 -s
# на сервере B: отдача в сторону A и приём от A (-R)
iperf3 -c IP_СЕРВЕРА_A -t 30
iperf3 -c IP_СЕРВЕРА_A -t 30 -R

После теста остановите iperf3 -s (Ctrl+C) и удалите правило: sudo ufw status numbered, затем sudo ufw delete <номер>. Публичные speedtest-сервисы и утилита speedtest-cli из репозитория удобны, но осторожно с выводами: результат зависит от выбранного тестового сервера, его загрузки и маршрута до него, а не только от вашего VPS.

Шаг 5. Steal time: не перегружен ли узел

Steal time - доля времени, когда виртуальный процессор готов работать, но гипервизор отдаёт физическое ядро другим машинам. Его показывает колонка st в vmstat и значение st в строке %Cpu(s) команды top:

bash
# пять замеров с интервалом в секунду, колонка st
vmstat 1 5
# в top: строка %Cpu(s), значение st
top

Около нуля - норма. Если st стабильно держится на заметном уровне, особенно под вашей нагрузкой во время sysbench, ваш VPS делит ядра с перегруженными соседями: тесты будут плавать, а программы - тормозить без видимой причины. Это повод показать вывод vmstat поддержке провайдера.

Комплексный тест: скрипт YABS

YABS (Yet Another Bench Script) - популярный скрипт, который за один запуск собирает сведения о системе и прогоняет тесты диска (fio), сети (iperf3 до публичных серверов) и процессора (Geekbench). Обычно его запускают одной строкой curl -sL yabs.sh | bash, но надёжнее сначала скачать и прочитать:

bash
curl -sL yabs.sh -o yabs.sh
less yabs.sh
bash yabs.sh

Как читать результаты тестов VPS

Что меритьКомандаГлавная цифраЧто она значит
Одно ядроsysbench cpu --threads=1events per secondСкорость отдельного запроса, тика, однопоточной задачи
Все ядраsysbench cpu --threads=$(nproc)events per secondСколько параллельной работы выдержит сервер
Случайный доступ к дискуfio --rw=randread/randwrite --bs=4kIOPS, clatСкорость баз данных, сборок, мелких файлов
Последовательный доступfio --rw=read --bs=1MBW, МБ/сКопирование, бэкапы, раздача больших файлов
Сетьiperf3 -cBitrate, Мбит/сПропускная способность между двумя серверами
Соседи по узлуvmstat 1 5st, %Сколько процессорного времени забирают другие машины
Сравнивайте цифры только между серверами, проверенными теми же командами и версиями программ.

Как проверить VPS Tihost

Сервер Tihost разворачивается примерно за 2 минуты после оплаты, так что все замеры можно сделать в первый час. Внутри KVM с полным root-доступом: lscpu покажет AMD Ryzen 9 5950X или 9950X в зависимости от локации, lsblk - NVMe-диск, подключённый как виртуальное устройство. Сколько памяти и vCPU нужно под задачу, подскажет статья «Сколько памяти нужно VPS».

Запустите сервер за 2 минуты

AMD Ryzen 9, NVMe и защита от DDoS в Германии, Финляндии и Польше. Оплата криптовалютой или картой.

Заказать сервер

Частые вопросы

Как проверить скорость диска на VPS?

Установите fio и запустите тест на файле, а не на устройстве: fio --name=randread --filename=fio-test --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=64 --runtime=30 --time_based. Смотрите на IOPS, задержку clat и пропускную способность BW.

Что такое steal time на VPS?

Steal time - доля времени, когда виртуальный процессор ждал, пока гипервизор обслужит другие машины на том же узле. Он виден в колонке st команд vmstat и top; стабильно высокий steal говорит о перегруженном узле.

Безопасно ли запускать YABS через curl yabs.sh | bash?

Это запуск чужого кода с вашими правами, поэтому надёжнее скачать скрипт командой curl -sL yabs.sh -o yabs.sh, прочитать и только потом запустить. YABS скачивает сторонние программы и отправляет результаты Geekbench на публичный сайт.

Почему sysbench даёт разные результаты на разных серверах?

Результат sysbench зависит от модели и частоты процессора, загрузки соседей по узлу и версии самого sysbench. Сравнивайте серверы одной версией программы и одними флагами, повторяя тест несколько раз.

Как проверить скорость сети на VPS?

Точнее всего - утилитой iperf3 между двумя своими серверами: iperf3 -s на одном и iperf3 -c IP -t 30 на другом. Публичные speedtest зависят от выбранного тестового сервера и маршрута до него.

Как узнать, NVMe ли диск у VPS?

Внутри виртуальной машины диск обычно виден как vda или sda, поэтому название не поможет. Надёжнее замерить случайное чтение блоками 4 КБ через fio: у NVMe IOPS заметно выше, а задержка ниже, чем у SATA SSD и HDD.