Как тестировать CPU на VPS с помощью sysbench
Провайдер обещает «мощные ядра», но что это значит на практике? Ниже — набор команд, которыми вы за 5 минут измерите реальную производительность процессора своего VPS и поймёте, не режут ли вам частоту под нагрузкой.
Содержание
Зачем вообще мерить CPU
['Цифра «2 vCPU» в тарифе почти ничего не говорит о скорости. Одно и то же количество виртуальных ядер на старом Xeon и на AMD EPYC отличается по производительности в разы. Плюс на переподписанных нодах частота «плавает»: в тесте всё хорошо, а под реальной нагрузкой сервер начинает тормозить, потому что сосед по ноде выел общий ресурс.', 'Тест CPU решает три задачи: измерить производительность одного ядра (важно для PHP, Node.js, баз данных), измерить суммарную производительность всех ядер (важно для сборок, кодирования, параллельных задач) и проверить стабильность частоты под длительной нагрузкой.']Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS на AMD EPYCСтавим sysbench
['sysbench — стандарт де-факто для быстрых синтетических тестов. Он есть в репозиториях Debian/Ubuntu и CentOS/AlmaLinux.', '# Debian / Ubuntu\napt update && apt install -y sysbench\n\n# AlmaLinux / Rocky / CentOS\ndnf install -y epel-release && dnf install -y sysbench\n\nsysbench --version', 'Заодно поставьте утилиты для контроля: htop, lscpu, util-linux. Полезно сразу посмотреть, что за железо под вами.', "lscpu | grep -E 'Model name|MHz|CPU\\(s\\)|Vendor'"]
Тест одного ядра (single-thread)
['Самый показательный тест для веба и БД — скорость одного потока. Запускаем расчёт простых чисел в один поток:', 'sysbench cpu --cpu-max-prime=20000 --threads=1 run', 'Смотрим на строку events per second — чем больше, тем быстрее ядро. На современных AMD EPYC вы увидите заметно более высокие значения, чем на бюджетных нодах, — это прямое следствие высокой частоты и свежей архитектуры Zen.', '- events per second — главный показатель скорости ядра;
- total time — должно быть близко к 10s (длительность по умолчанию);
- latency avg/max — если max сильно выше avg, ядро «дёргают» соседи.
Тест всех ядер (multi-thread)
['Теперь грузим все выделенные ядра. Подставьте число потоков, равное числу vCPU (узнать:nproc).', 'sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) run', 'В идеале events per second масштабируется почти линейно: 4 ядра дают примерно вчетверо больше, чем одно. Если прироста почти нет — вам продали «общие» ядра, которые делятся между клиентами. На выделенных ядрах MAATRIX (AMD EPYC + NVMe) масштабирование близко к линейному, потому что ресурс закреплён за вашей виртуалкой.']
Тест памяти и планировщика
['CPU-производительность — это не только арифметика. sysbench умеет мерить пропускную способность памяти и накладные расходы на переключение потоков, что важно для многопоточных приложений и баз данных.', '# пропускная способность памяти (последовательная запись)\nsysbench memory --memory-block-size=1M \\\n --memory-total-size=20G --memory-oper=write run\n\n# нагрузка на планировщик: борьба потоков за мьютексы\nsysbench threads --threads=$(nproc) --thread-yields=1000 \\\n --thread-locks=8 --time=30 run', 'В тесте памяти смотрим на transferred (MiB/sec) — на серверных платформах с многоканальной памятью значения заметно выше десктопных. В тесте threads меньшая latency означает, что планировщик и ядра не перегружены соседями и переключения контекста дёшевы.']
Проверка стабильности частоты
['Короткий тест могут пройти все. Реальная проверка — длительная нагрузка. Гоняем CPU 5 минут и параллельно смотрим частоту.', '# окно 1: долгий тест\nsysbench cpu --cpu-max-prime=20000 --threads=$(nproc) --time=300 run\n\n# окно 2: следим за частотой в реальном времени\nwatch -n 2 "grep MHz /proc/cpuinfo"', 'Если частота во втором окне проседает на 20-40% через минуту-две — это троттлинг или переподписка ноды. На честном хостинге частота держится ровно всё время теста.', 'Дополнительно проверьте steal time во время долгого прогона — колонка st в vmstat 2. Нулевой steal под полной нагрузкой означает, что ядра действительно ваши, а не делятся с соседями. Ненулевой и растущий — верный признак переподписанной ноды, и никакой апгрейд тарифа тут не поможет.', 'Частая ошибка: делать выводы по одному короткому прогону. Запустите тест 3-5 раз подряд в разное время суток и сравните — разброс больше 10% говорит о «шумном соседе» на ноде. Ночью shared-ноды выглядят прекрасно, а в дневной пик проваливаются именно тогда, когда к вам идёт трафик.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS на AMD EPYCЧастые вопросы
Какое значение events per second считать хорошим?
Абсолютных норм нет — сравнивайте с эталоном. Для single-thread на свежем AMD EPYC ориентир — от 1500-2000 events/s при cpu-max-prime=20000. Главное, чтобы значение было стабильным между прогонами.
sysbench показывает высокие цифры, а сайт тормозит. Почему?
CPU может быть не узким местом. Проверьте диск (fio), сеть (iperf3) и стабильность частоты под длительной нагрузкой — короткий тест её не ловит.
Нагрузит ли тест соседей по ноде?
На вашей выделенной квоте — нет, вы используете свои ядра. Но на переподписанных нодах ваш тест конкурирует с соседями, и результат будет заниженным и нестабильным.