Бенчмарк — это измерение максимальной производительности компьютера, которое выражают в условных очках. Благодаря этому можно сравнить производительность разных компьютеров, либо одного и того же компьютера после, например, разгона или андерволтинга.
Бенчмарк и стресс-тест это не одно и то же. И при бенчмарке и при стресс-тесте система получает полную нагрузку. Но главная цель бенчмаркинга это оценка производительности, а главная цель стресс-теста это проверка, сможет ли система функционировать на пределе своей загруженности, либо определить этот предел. Хотя, на самом деле, некоторые программы совмещают в себе обе функции.
Бенчмарк может выполняться дли системы в целом, либо для отдельных её составляющих: для центрального процессора, видеокарты, системы ввода-вывода.
В Линукс имеется несколько программ для оценки производительности центрального процессора, например: sysbench, stress-ng и phoronix-test-suite. Из них stress-ng в первую очередь выполняет функции стресс-теста, но она выводит получаемые метрики, поэтому вполне пригодна для оценки и сравнения производительности системы.
Бенчмарк в sysbench
sysbench — это утилита командной строки. Она создана для оценки производительности серверов с сильно нагруженными СУБД, но подходит и для проведения бенчмарков обычных систем.
Установка в Ubuntu, Linux Mint, Debian, Kali Linux:
sudo apt install sysbench
Встроенные в программу тесты:
- fileio — Тестирование файлового ввода/вывода
- cpu — Тестирование производительности CPU
- memory — Тестирование скорости функций памяти
- threads — Тестирование производительности подсистемы потоков
- mutex — тест производительности Mutex
Для запуска теста производительности центрального процессора:
sysbench cpu run
Обратите внимание как запускается программа: в начале идёт название теста, затем опции (в первом примере их нет), а затем команда.
Для программы установлено два придела выполнения:
- 10000 операций с числами
- 10 секунд выполнения
В зависимости от того, что наступит первым, программа завершит свою работу или после 10000 событий, либо после 10 секунд.
Современные процессоры очень производительные и если программа завершилась очень быстро, то данные могут быть искажены. Например, при оценки производительности процессора играет роль, к примеру, троттлинг (сброс частот). Троттлинг начинается из-за перегрева или превышения TDP. Эти эффекты наблюдаются только на длительных дистанциях работы процессора. Если, к примеру, тест завершился за секунду и вы получили n обработанных операций, это не означает, что процессор за 60 секунд выполнит 60 * n операций, поскольку он будет сбрасывать частоты из-за перегрева и выхода за пределы установленного в TDP рассеивания тепла.
Для более длительного выполнения теста используются опции --cpu-max-prime и --time. Первая устанавливает максимальное количество выполненных операций, а вторая — максимальное время проведения бенчмарка. При одновременном использовании опций приоритет имеет --time.
Современные центральные процессоры являются многоядерными и многопотоковыми:
По умолчанию sysbench запускает в один поток. Поэтому если вы хотите задействовать все ядра вашего процессора, используйте опцию --threads. У меня 6 физических и 12 логических ядер центрального процессора, поэтому я буду использовать значение 12, чтобы работали все процессоры.
При использовании опции --cpu-max-prime, чем меньше время завершения программы, тем производительныее центральный процессор:
sysbench cpu --threads=12 --cpu-max-prime=100000 run
Программа завершила работу слишком быстро — за 10 секунд вряд ли процессор успел подвергнуться серьёзному троттлингу. Поэтому с такими значениями тест подходит для оценки пиковой производительности на короткой дистанции.
Получены результаты:
CPU speed: events per second: 538.23 General statistics: total time: 10.0188s total number of events: 5393 Latency (ms): min: 19.85 avg: 22.27 max: 30.56 95th percentile: 23.10 sum: 120125.61 Threads fairness: events (avg/stddev): 449.4167/4.11 execution time (avg/stddev): 10.0105/0.01
CPU speed events per second означает количество выполненный в центральном процессоре операций за секунду — чем выше значение, тем производительнее система.
General statistics total time означает общее время выполнения операций.
General statistics total number of events означает общее количество выполненный событий.
Если система завершает работу слишком быстро, можно увеличить значение, например, до двухсот тысяч событий:
sysbench cpu --cpu-max-prime=200000 run
Ещё один способ проверки троттлинга и оценки производительности процессора под длительной нагрузкой, это установка времени выполнении, в примере ниже установлено время в 300 секунд.
sysbench cpu --threads=12 --time=300 run
У меня при использовании опций --time и --cpu-max-prime CPU speed events per second различается в десятки раз — видимо или какой-то баг в программе, либо программа считает по каким-то другим правилам.
Бенчмарк в phoronix-test-suite
Установите программу:
sudo apt install phoronix-test-suite
Запустите – в первый раз нужно будет принять лицензионное соглашение, так программа спросит разрешение на отправку анонимной статистики:
phoronix-test-suite list-available-suites
Предыдущая команда выведит список доступных бенчмарков.
Доступные наборы в версии Phoronix Test Suite v8.0.1
pts/audio-encoding - Audio Encoding System pts/chess - Chess Test Suite Processor pts/compilation - Timed Code Compilation Processor pts/compiler - Compiler Processor pts/compression - Timed File Compression Processor pts/computational - Computational Test Suite System pts/computational-biology - Computational Biology Test Suite Processor pts/cpu - CPU / Processor Suite Processor pts/cryptography - Cryptography Processor pts/daily-kernel-tracker - Daily Kernel Tracker System pts/daily-system-tracker - Daily System Tracker System pts/database - Database Test Suite System pts/desktop-graphics - Desktop Graphics System pts/disk - Disk Test Suite Disk pts/encoding - Encoding System pts/favorites - Favorites System * pts/gaming - Gaming System pts/gaming-closed - Closed-Source Gaming System * pts/gaming-free - Free Software Gaming System pts/gui-toolkits - GUI Toolkits Graphics pts/ioquake3-games - Games Using The ioquake3 Engine System pts/iqc - Image Quality Comparison Suite Graphics pts/java - Java System pts/java-opengl - Java OpenGL System pts/kernel - Kernel System pts/linux-system - Linux System System pts/machine-learning - Machine Learning System pts/memory - Memory Test Suite Memory pts/mesa - Mesa Test Suite Graphics pts/motherboard - Motherboard System pts/multicore - Multi-Core Processor pts/netbook - Netbook Test Suite System pts/network - Networking Test Suite Network pts/nevada - OpenSolaris Nevada Test Suite System pts/opencl - OpenCL System pts/opengl-demos - OpenGL Demos Test Suite System pts/opengl-workstation - OpenGL Workstation Test Suite System pts/pts-desktop-live - PTS Desktop Live System pts/ray-tracing - Ray-Tracing Test Suite System pts/server - Server Motherboard System pts/ue4 - Unreal Engine 4 Tech Demos On Linux Graphics pts/unigine - Unigine Test Suite Graphics * pts/universe - Universe Test Suite System pts/universe-cli - Universe CLI Test Suite System * pts/universe-x - Universe X Test Suite System pts/video-encoding - Video Encoding System pts/workstation - Workstation System pts/workstation-graphics - Workstation Graphics Graphics pts/xrender - X Render Extension Testing Graphics system/collection - Collection System
Звёздочкой отмечены частично поддерживаемые наборы.
Для запуска оценки производительности центрального процессора выполните:
phoronix-test-suite run pts/cpu
Обратите внимание, что pts/cpu и другие бенчмарки занимают несколько гигабайт дискового пространства. К примеру, pts/cpu загрузит около 3 Гб данных и будет использовать примерно 7 Гб дискового пространства (в домашней директории пользователя).
О том, как контролировать текущую частоту и температуру процессора в Linux смотрите здесь.
Связанные статьи:
- Как посмотреть текущую частоту процессора в Linux (90.1%)
- Как ограничить использование центрального процессора и памяти в Linux (90.1%)
- Ошибка «Failed to load module "intel" (module does not exist, 0)» (РЕШЕНО) (82.7%)
- Андервольтинг в Linux центрального процессора (CPU) (72.8%)
- Как в Linux посмотреть количество ядер процессора (72.8%)
- ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске (RANDOM - 22.8%)