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

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 в порядке, а сервер тормозит — ищите узкое место в диске или сети.