UnixBench: сравниваем производительность серверов одним баллом

Сборка UnixBench из GitHub, запуск однопоточного и многопоточного прогона, чтение System Benchmarks Index Score и чего эти баллы не показывают. Ubuntu, Debian, AlmaLinux.

14 октября 2026 г.·3 мин чтения·unixbench, benchmark, linux

UnixBench — классический тест Unix-систем. Он прогоняет набор нагрузок на процессор, память и файловую систему и сводит их в один балл, по которому удобно сравнивать серверы между собой: новый тариф со старым, две площадки, сервер до и после переезда на другой узел. Проект живёт на GitHub, актуальная версия на момент написания — 6.0.1.

Замеры ниже делались на VPS в Германии — на tanaka.host у каждого сервера свой IPv4 и IPv6, так что проверять можно оба стека.

Сам по себе балл ничего не говорит о «хорошем» или «плохом» сервере. Он полезен только в сравнении, снятом одинаковым способом.

Что измеряется

Тест Что проверяет
Dhrystone 2 Целочисленные операции процессора
Whetstone Операции с плавающей точкой
Execl Throughput Замена образа процесса
File Copy (1K, 256B, 4K) Копирование файлов разными блоками
Pipe Throughput Передача через канал
Pipe-based Context Switching Переключение контекста между процессами
Process Creation fork новых процессов
Shell Scripts (1, 8) Запуск shell-сценариев
System Call Overhead Накладные расходы системных вызовов

Графические тесты в стандартной сборке отключены — они требуют X11 и на сервере без рабочего стола не нужны.

1. Зависимости

Для сборки нужны компилятор, make и Perl, на котором написан запускающий скрипт.

# Ubuntu, Debian
sudo apt update && sudo apt install -y build-essential perl git
# AlmaLinux, Rocky, CentOS Stream
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y perl git

2. Сборка

git clone https://github.com/kdlucas/byte-unixbench.git
cd byte-unixbench/UnixBench
make

Сборка занимает меньше минуты. Предупреждения компилятора — нормально, важна только отсутствие Error.

3. Запуск

./Run

Больше ничего указывать не нужно. UnixBench сам прогоняет набор дважды: сначала в один поток, потом в столько потоков, сколько ядер видит система. В одном запуске получаются и однопоточный, и многопоточный результат.

Полный прогон на двух ядрах занимает около 30 минут, на восьми — дольше. Если сессия может отвалиться, запускайте в tmux или screen.

Остановите нагруженные службы перед тестом. Веб-сервер, база, воркеры — всё, что ест CPU, занижает балл. И не запускайте UnixBench на рабочем сервере в часы нагрузки: он сам забирает весь процессор на полчаса.

Отдельные тесты или только однопоточный режим:

./Run -c 1 dhry2reg whetstone-double    # только CPU, один поток
./Run -c 4                              # весь набор в 4 потока

4. Как читать результат

В конце — таблица по тестам и две итоговые строки:

System Benchmarks Index Score (1 copy)      1250.3
System Benchmarks Index Score (N copies)    4800.7
  • 1 copy — один поток, скорость одного ядра. Важна для PHP, Node.js, однопоточных игровых серверов и всего, что плохо параллелится.
  • N copies — все ядра сразу, общая мощность. Важна для сборок, компиляции, параллельных воркеров.

Чем больше число, тем быстрее. Баллы считаются относительно эталонной машины SPARCstation 20-61 1995 года, у которой за каждый тест по 10 баллов, — отсюда и четырёхзначные цифры у современных систем.

Отношение «N copies / 1 copy» показывает, насколько ядра реальны: на VPS с четырьмя vCPU, которые делят одно физическое ядро с соседями, многопоточный балл будет заметно меньше, чем 4 × однопоточный.

Чего балл не показывает

  • Сеть. Для неё — Speedtest и iperf3.
  • Диск под реальной нагрузкой. File Copy меряет через кэш ОС. Для IOPS — fio.
  • Стабильность во времени. Один прогон — одна точка. Если сосед по хосту запустил майнер, вы увидите это только повторив тест вечером.

Сравнивайте только результаты, снятые одинаково: одна версия UnixBench, один компилятор, одна версия ядра. Чужие цифры из интернета с другой сборки напрямую не сопоставимы.

Частые ошибки

make: gcc: command not found — не установлен build-essential / Development Tools.

Can't locate Time/HiRes.pm — на минимальных образах RHEL нет части Perl-модулей: sudo dnf install -y perl-Time-HiRes.

Тест обрывается на Shell Scripts — не хватает места в /tmp или стоит noexec. Проверьте df -h /tmp и mount | grep /tmp.

Многопоточный балл ниже однопоточного — на сервере одно ядро, а N copies запущен по числу потоков из nproc. Или ядра виртуальные и перегружены — повторите тест в другое время.

Если CPU в порядке, а сервер тормозит — ищите узкое место в диске или сети.