ZaLinux.ru

Программы для бенчмарка CPU в Linux

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

Бенчмарк и стресс-тест это не одно и то же. И при бенчмарке и при стресс-тесте система получает полную нагрузку. Но главная цель бенчмаркинга это оценка производительности, а главная цель стресс-теста это проверка, сможет ли система функционировать на пределе своей загруженности, либо определить этот предел. Хотя, на самом деле, некоторые программы совмещают в себе обе функции.

Бенчмарк может выполняться дли системы в целом, либо для отдельных её составляющих: для центрального процессора, видеокарты, системы ввода-вывода.

В Линукс имеется несколько программ для оценки производительности центрального процессора, например: 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 смотрите здесь.

Рекомендуемые статьи:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *