Benchmarking (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Benchmarking. Дата последней синхронизации: 25 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Тестирование производительности (бенчмаркинг) — это акт измерения производительности и сравнения результатов с результатами другой системы или общепринятым стандартом с помощью единой процедуры. Этот унифицированный метод оценки производительности системы может помочь ответить на такие вопросы, как:

  • Работает ли система так, как должна?
  • Какую версию драйвера следует использовать для достижения оптимальной производительности?
  • Способна ли система выполнить задачу x?

Для определения производительности системы можно использовать множество инструментов; ниже приведён список доступных инструментов.

Отдельные инструменты

UnixBench

Установите пакет unixbenchAUR и для запуска тестирования выполните команду ubench.

Смотрите также:

interbench

interbench — это приложение для оценки интерактивности в Linux. Оно предназначено для измерения влияния изменений в дизайне ядра Linux или изменений конфигурации системы, таких как изменения и опции процессора, планировщика ввода-вывода и файловой системы.

Совет: При аккуратном тестировании можно сравнивать разное оборудование.

interbench доступен в AUR: interbenchAUR.

Смотрите также:

ttcp

ttcp (Test TCP) измеряет пропускную способность точка-точка через любое сетевое соединение. Программа должна быть установлена на обоих узлах, между которыми необходимо определить пропускную способность.

Различные варианты ttcp можно найти в AUR:

iperf

iperf — это простой в использовании инструмент тестирования пропускной способности сети между двумя узлами, который может использовать TCP или UDP. Он имеет красиво отформатированный вывод и режим параллельного тестирования.

Есть две разные версии: iperf и iperf3.

time

Команда time(1) предоставляет статистику времени выполнения команды, отображая время, прошедшее между вызовом и завершением. Пакет time предоставляет команду time, а некоторые командные оболочки предоставляют time в качестве встроенной команды.

$ time tar -zxvf archive.tar.gz

hdparm

Накопители можно тестировать с помощью hdparm (пакет hdparm). Используя hdparm с ключом -Tt, можно определить время последовательного чтения. Этот метод не зависит от выравнивания разделов.

# hdparm -Tt /dev/sdX
/dev/sdX:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
Примечание: Для точной оценки скорости чтения следует выполнить эту команду 2-3 раза и вручную усреднить результаты, согласно странице руководства hdparm.

gnome-disks

Графический бенчмарк gnome-disks (пакет gnome-disk-utility) показывает минимальную, максимальную и среднюю скорости чтения, а также среднее время доступа, с красивым графическим отображением. Этот метод не зависит от выравнивания разделов.

# gnome-disks

Бенчмарк находится в главном меню, пункт Оценить производительность диска. Пример бенчмарка

KDiskMark

kdiskmark — это инструмент для измерения производительности HDD и SSD с очень дружественным графическим интерфейсом. KDiskMark с его предустановками и мощным графическим интерфейсом вызывает Flexible I/O Tester и обрабатывает его вывод, предоставляя простой для просмотра и интерпретации комплексный результат тестирования.

systemd-analyze

$ systemd-analyze plot > boot.svg

Построит подробный график времени загрузки системы: время ядра, время пользовательского пространства, время, затраченное каждой службой. Пример

dd

Утилита dd может быть использована для измерения как скорости чтения, так и скорости записи. Этот метод зависит от выравнивания разделов! Другими словами, если разделы выровнены неправильно, это скажется на результатах тестирования, поскольку оно выполняется в примонтированной файловой системе.

Примечание: Команду нужно выполнять в той точке монтирования, в которой примонтирован раздел тестируемого устройства.

На разделе, имеющем хотя бы 1,1 ГБ свободного места, запишите тестовый файл, чтобы измерить скорость записи и создать файл для дальнейшего измерения скорости чтения:

$ dd if=/dev/zero of=/путь/к/диску/tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
Совет: На странице dd-benchmark есть объяснение, почему необходимо использовать sync и другие связанные с этим опции dd.

Затем очистите буфер-кэш, чтобы измерялась скорость чтения непосредственно устройства, а не кэша, и выполните чтение ранее записанного файла:

# echo 3 > /proc/sys/vm/drop_caches
$ dd if=/путь/к/диску/tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s

Теперь, когда последний файл попал в кэш, повторите команду, чтобы увидеть скорость работы кэша:

$ dd if=/путь/к/диску/tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
Примечание: Для точной оценки скорости чтения буфера необходимо выполнить эту команду 4-5 раз и вручную усреднить результаты.

Наконец, удалите временный файл

$ rm /путь/к/диску/tempfile
Примечание: Некоторые контроллеры SSD имеют аппаратную реализацию сжатия, что может исказить результаты бенчмарков. Смотрите https://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/

dcfldd

Dcfldd не выводит среднюю скорость в МБ/с, как это делает старый добрый dd, но с помощью time это можно обойти.

Следующая команда удалит все данные на диске и измерит время заполнения диска нулевыми байтами:

# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s

Теперь можно рассчитать скорость в МБ/с, разделив результат команды dcfldd на время в секундах. Для данного примера: 75776Mb / (16.4 min * 60) = 77.0 MB/s.

7z

Команда 7z benchmark может использоваться для измерения скорости процессора в MIPS, а также для проверки оперативной памяти на наличие ошибок. Просто установите p7zip и выполните приведённую ниже команду. Более подробную информацию можно найти здесь: [1].

$ 7z b

peakperf

peakperf-gitAUR — это микробенчмарк, который пытается достичь пиковой производительности на процессорах x86_64. Некоторые проблемы могут снизить производительность, обеспечиваемую вашим процессором, например, охлаждение процессора. С помощью peakperf вы можете проверить, обеспечивает ли ваш процессор полную мощность, на которую он способен.

Можно рассчитать производительность (измеряемую в GFLOP/s), которую вы должны получить на своём процессоре (смотрите [2]), и сравнить её с производительностью, которую выдаёт peakperf. Если оба значения одинаковы (или очень близки друг к другу), то ваш процессор работает как положено.

Примечание: Несмотря на то, что целью peakperf является тестирование процессора, это также отличный способ проверить ваше охлаждение, поскольку он способен довести процессор до троттлинга.

Программные комплексы

Bonnie++

bonnie++ — это переписанный на C++ набор бенчмарков Bonnie, предназначенный для проведения нескольких тестов производительности жёсткого диска и файловой системы.

Важно: По умолчанию bonnie++ записывает на диск как минимум два объёма оперативной памяти. Если вы не хотите тратить ресурс своего SSD, используйте нестандартные опции.
Примечание: Оригинальный набор Bonnie, похоже, не был выпущен под GPL или другой совместимой лицензией.

Смотрите также:

IOzone

IOzone полезна для проведения широкого анализа файловой системы компьютерной платформы поставщика.

Эта программа доступна в AUR: iozoneAUR.

Смотрите также тему на форуме: iozone to evaluate I/O schedulers... results NOT what you'd expect!.

HardInfo

hardinfo-gitAUR[ссылка недействительна: package not found] может собирать информацию об оборудовании и операционной системе, проводить тестирование производительности и генерировать отчёты в формате HTML или обычного текста. HardInfo выполняет бенчмарки CPU и FPU и имеет очень чистый интерфейс на базе GTK.

Phoronix Test Suite

Phoronix Test Suite — это наиболее полная платформа для тестирования и бенчмаркинга, предоставляющая расширяемую структуру, в которой можно легко добавлять новые тесты. Программное обеспечение разработано для эффективного проведения качественных и количественных тестов в чистом, воспроизводимом и простом в использовании виде.

Phoronix Test Suite основан на обширном тестировании и внутренних инструментах, разработанных Phoronix.com с 2004 года при поддержке ведущих поставщиков компьютерного оборудования и программного обеспечения. Это программное обеспечение с открытым исходным кодом и лицензировано по лицензии GNU GPLv3.

Изначально разработанный для автоматизированного тестирования Linux, Phoronix Test Suite теперь поддерживает операционные системы OpenSolaris, Apple macOS, Microsoft Windows и BSD. Phoronix Test Suite состоит из лёгкого ядра (pts-core) с бенчмарками, состоящими из XML-профилей и соответствующих ресурсных скриптов. Процесс от установки бенчмарка до собственно тестирования и анализа важных аппаратных и программных компонентов в значительной степени автоматизирован и полностью повторяем; у пользователя запрашивается только подтверждение действий.

Phoronix Test Suite взаимодействует с OpenBenchmarking.org в качестве совместной веб-платформы для централизованного хранения результатов тестирования, обмена профилями тестов и результатами, расширенными аналитическими возможностями и другими функциями. Phoromatic — корпоративный компонент для оркестровки выполнения тестов в нескольких системах с возможностью удалённого управления.

Установить Phoronix Test Suite можно с помощью пакета phoronix-test-suiteAUR. Разрабатываемая версия доступна в пакете phoronix-test-suite-gitAUR.

S

S, I/O Benchmark Suite, представляет собой небольшую коллекцию скриптов для измерения производительности ввода-вывода хранилища.

Разработчиком является algodev — команда, стоящая за планировщиком BFQ.

Скачайте или клонируйте проект, установите его зависимости и запустите его от имени root (привилегии необходимы для изменения дискового планировщика).

s-tui

s-tui — это эстетически приятный и полезный интерфейс в стиле curses, который показывает графики частоты процессора, использования, температуры, энергопотребления, а также имеет встроенный стресс-тестер.

Флеш-накопители

Производительность может быть количественно измерена с помощью iozoneAUR. Значения устойчивого чтения и записи могут, но зачастую не коррелируют с реальными тяжёлыми операциями ввода-вывода, такими как распаковка и запись большого числа файлов при обновлении системы. В таких случаях стоит ориентироваться на метрику случайной записи для небольших файлов.

Следующий пример тестирует 10-мегабайтный файл с размером записи 4k:

$ iozone -e -I -a -s 10M -r 4k -i 0 -i 1 -i 2
...

                                                                random   random
              kB  reclen    write  rewrite    read    reread    read     write
           10240       4      661      649     5802     5822     3892      624
Примечание: Результаты тестирования указываются в КБ/с.

Графика

Basemark GPU

Basemark GPU — это инструмент для анализа и измерения производительности графических API (OpenGL 4.5, OpenGL ES 3.1, Vulkan и Microsoft DirectX 12) на мобильных и настольных платформах. Basemark GPU нацелен как на настольные, так и на мобильные платформы, предоставляя режимы высокого и среднего качества. Режим высокого качества предназначен для самых современных рабочих нагрузок на настольных компьютерах, а режим среднего качества — для эквивалентных мобильных рабочих нагрузок.

Если вы используете GPU AMD и у вас одновременно установлено несколько реализаций vulkan, на странице тестирования вы увидите их как отдельные GPU в выпадающем списке Graphics Device.

Basemark GPU доступен в пакете basemarkAUR.

Blender-benchmark

Blender-benchmark соберёт информацию о системе, такую как операционная система, оперативная память, видеокарты, модель процессора, а также информацию о производительности системы во время выполнения бенчмарка. После этого пользователь сможет поделиться результатом онлайн на платформе Blender Open Data или сохранить данные локально.

Blender-benchmark доступен в пакете blender-benchmarkAUR.

GFXBench

GFXBench — это высококлассный графический бенчмарк, измеряющий производительность мобильных и настольных компьютеров с графическими функциями нового поколения на всех платформах. Как настоящий кросс-API бенчмарк, GFXBench поддерживает все основные API, в том числе OpenGL, OpenGL ES, Vulkan, Metal, DirectX/Direct3D и DX12.

Тесты API Vulkan в настоящее время находятся в разработке и доступны только для корпоративных партнёров.

GFXBench доступен в пакете gfxbenchAUR.

glmark2

glmark2 — тестирование OpenGL 2.0 и ES 2.0.

glmark2 доступен в пакете glmark2.

glxgears

glxgears — это популярный тест OpenGL, который выполняет рендеринг очень простой OpenGL-картинки и выводит частоту кадров. Хотя glxgears может быть полезен как тест возможностей прямого рендеринга графического драйвера, это устаревший инструмент, который не отражает текущее состояние графики GNU/Linux и общих возможностей OpenGL. Он тестирует только небольшой сегмент возможностей OpenGL, которые могут быть использованы в игре. Увеличение производительности, отмеченное в glxgears, не обязательно будет реализовано в конкретной игре. Более подробную информацию смотрите здесь.

glxgears доступен в пакетах mesa-utils и lib32-mesa-utils (для multilib).

GpuTest

GpuTest — это кроссплатформенный (Windows, Linux и Max OS X) стресс-тест GPU и бенчмарк OpenGL. GpuTest поставляется с несколькими тестами GPU, включая некоторые популярные в мире Windows (FurMark или TessMark).

GpuTest доступен в пакете gputestAUR.

intel-gpu-tools

intel-gpu-tools даёт вам некоторую информацию о встроенном GPU. Это может быть весьма полезно при диагностике проблем с ускорением GPU.

Для использования установите пакет intel-gpu-tools.

MangoHud

MangoHud — это комплексный оверлей для мониторинга производительности системы в приложениях Vulkan и OpenGL.

Установка и настройка описана в статье MangoHud.

Unigine Engine

Unigine corp. выпустила несколько современных бенчмарков OpenGL на базе своего графического движка с такими возможностями, как:

  • Перпиксельное динамическое освещение
  • Normal & parallax occlusion mapping
  • 64-битный HDR-рендеринг
  • Объёмный туман и свет
  • Мощные системы частиц: огонь, дым, взрывы
  • Расширяемый набор шейдеров (GLSL / HLSL)
  • Постобработка: глубина резкости, преломление, свечение, размытие, цветокоррекция и многое другое.

Бенчмарки Unigine недавно нашли применение среди тех, кто стремится разогнать свои системы. Heaven особенно часто используется для начального тестирования стабильности разгона.

Эти бенчмарки можно найти в AUR:

vkmark

vkmark — это расширяемый набор бенчмарков Vulkan с целевыми, настраиваемыми сценами.

vkmark доступен в пакете vkmark.

Смотрите также