Benchmarking (Русский)
Тестирование производительности (бенчмаркинг) — это акт измерения производительности и сравнения результатов с результатами другой системы или общепринятым стандартом с помощью единой процедуры. Этот унифицированный метод оценки производительности системы может помочь ответить на такие вопросы, как:
- Работает ли система так, как должна?
- Какую версию драйвера следует использовать для достижения оптимальной производительности?
- Способна ли система выполнить задачу x?
Для определения производительности системы можно использовать множество инструментов; ниже приведён список доступных инструментов.
Отдельные инструменты
UnixBench
Установите пакет unixbenchAUR и для запуска тестирования выполните команду ubench.
Смотрите также:
- https://github.com/kdlucas/byte-unixbench
- https://github.com/kdlucas/byte-unixbench/blob/master/UnixBench/USAGE
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
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
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
Наконец, удалите временный файл
$ rm /путь/к/диску/tempfile
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. Если оба значения одинаковы (или очень близки друг к другу), то ваш процессор работает как положено.
Программные комплексы
Bonnie++
bonnie++ — это переписанный на C++ набор бенчмарков Bonnie, предназначенный для проведения нескольких тестов производительности жёсткого диска и файловой системы.
Смотрите также:
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:
- unigine-sanctuaryAUR (2007)
- unigine-tropicsAUR (2008)
- unigine-heavenAUR (2009)
- unigine-valleyAUR (2013)
- unigine-superpositionAUR (2017)
vkmark
vkmark — это расширяемый набор бенчмарков Vulkan с целевыми, настраиваемыми сценами.
vkmark доступен в пакете vkmark.