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

В список вошли утилиты, предлагаемые резидентами GitHub и участниками тематических тредов на Reddit, — Sysbench, UnixBench, Phoronix Test Suite, Vdbench и IOzone.


/ Unsplash / Veri Ivanova

Sysbench


Это — утилита для нагрузочного тестирования MySQL-серверов, основанная на проекте LuaJIT, в рамках которого разрабатывается виртуальная машина для языка Lua. Автор инструмента — программист и эксперт по MySQL Алексей Копытов. Проект начинался как хобби, но со временем обрел признание сообщества. Сегодня sysbench используют в своей работе крупные университеты и ИТ-организации вроде IEEE.

Во время конференции SECR-2017 (запись выступления есть на YouTube) Алексей рассказал, что sysbench позволяет оценить производительность базы данных при переносе на новое оборудование, обновлении версии СУБД или резком изменении числа запросов. В общем случае синтаксис команды для проведения теста выглядит следующим образом:

sysbench [options]... [testname] [command]

Эта команда определяет тип (cpu, memory, fileio) и параметры нагрузочного теста (количество потоков, число запросов, скорость обработки транзакций). В целом инструмент способен обрабатывать миллионы событий за секунду. Подробнее об архитектуре и внутреннем устройстве sysbench Алексей Копытов рассказал в одном из выпусков подкаста Software Development Podcast.



UnixBench


Набор инструментов для оценки производительности Unix-систем. Его представили инженеры из университета Монаша в 1983 году. С того момента поддержкой инструмента занималось множество людей, например, авторы журнала о микрокомпьютерных технологиях Byte Magazine и участник LKML Дэвид Ниеми (David Niemi). За выход следующей версии инструмента отвечает Энтони Воэлм (Anthony Voellm) из Microsoft.

UnixBench представляет собой набор индивидуальных тестов. Они сопоставляют скорость выполнения кода на машине под управлением Unix с производительностью эталонной системы, в роли которой выступает SPARCstation 20-61. На основе этого сравнения генерируется балл, определяющий производительность.

Среди доступных тестов числятся: Whetstone, который описывает эффективность операций с плавающей точкой, File Copy, оценивающий скорость копирования данных, и несколько 2D и 3D-бенчмарков. Полный список тестов можно найти в репозитории на GitHub. Многие из них используют для оценки производительность виртуальных машин в облаке.



Phoronix Test Suite


Этот комплекс тестов разработан авторами веб-ресурса Phoronix, на котором публикуются новости о дистрибутивах GNU/Linux. Впервые Test Suite представили в 2008 году — тогда он включал 23 различных теста. Позже разработчики запустили облачный сервис OpenBenchmarking.org, на котором пользователи могли публиковать собственные тестовые сценарии. Сегодня на нем представлено около 60 бенчмарк-наборов, в том числе связанных с машинным обучением и технологией ray-tracing.

Наборы специализированных скриптов позволяют протестировать отдельные компоненты системы. С их помощью можно оценить время компиляции ядра и кодирования видеофайлов, скорость сжатия архиваторов и др. Для запуска тестов достаточно написать соответствующую команду в консоли. Например, эта команда инициирует оценку производительности CPU:

phoronix-test-suite benchmark smallpt

Во время тестирования Test Suite самостоятельно контролирует состояние оборудования (температуру CPU и скорость вращения кулеров), защищая систему от перегрева.




/ Unsplash / Jason Chen



Vdbench


Инструмент для генерации I/O-нагрузки на дисковые системы, разработанный Oracle. Он помогает оценить производительность и целостность СХД (о том, как посчитать теоретическую производительность дисковой системы, мы подготовили краткую справку).

Работает решение следующим образом: на реальной системе запускается программа SWAT (Sun StorageTek Workload Analysis Tool), которая создает дамп со всеми обращениями к диску за определённый период. Записываются метка времени, тип операции, адрес и размер блока данных. Далее, используя файл с дампом, vdbench эмулирует нагрузку на любой другой системе.

Список параметров для управления утилитой есть в официальном документе Oracle. Исходный код утилиты можно найти на сайте компании.



IOzone


Консольная утилита для оценки производительности файловых систем. Она определяет скорость чтения, записи и перезаписи файлов. В разработке инструмента приняли участие десятки программистов, но автором его первой версии считается инженер Уильям Норкотт (William Norcott). Разработку поддержали такие компании, как Apple, NetApp и iXsystems.

Для управления потоками и их синхронизации во время тестирования инструмент использует стандарт POSIX Threads. По завершении работы IOzone выдает отчет с результатами или в текстовом формате, или в виде электронной таблицы (Excel). Также инструмент имеет в составе скрипт gengnuplot.sh, который строит по данным таблиц трехмерный график. Примеры таких графиков можно найти в документации к инструменту (стр. 11–17).

IOzone доступен в качестве тестового профайла в уже упомянутом Phoronix Test Suite.



Дополнительное чтение из наших блогов и социальных сетей:

Баг в Linux 5.1 приводил к потере данных — корректирующий патч уже вышел
Есть мнение: технология DANE для браузеров провалилась

Зачем нужен мониторинг?
Резервное копирование файлов: как подстраховаться от потери данных
Как перенести системный жесткий диск в виртуальную машину?

Все говорят об утечках ПД — чем поможет IaaS-провайдер
Короткий ликбез: как устроена ЭЦП
Справочная: как работает закон о персональных данных

Комментарии (5)


  1. aik
    12.06.2019 18:49
    +1

    Для быстрого наколеночного сравнения я вот этот скрипт обычно использую: github.com/mgutz/vpsbench

    Результат работы выглядит так:
    CPU model: Intel Xeon Processor (Sandy Bridge, IBRS)
    Number of cores: 2
    CPU frequency: 2099.998 MHz
    Total amount of RAM: 1993 MB
    Total amount of swap: MB
    System uptime: 64 days, 12:35,
    I/O speed: 381 MB/s
    Bzip 25MB: 6.62s
    Download 100MB file: 63.7MB/s


    Понятно, что это далеко не идеальный вариант, но хотя бы единая шкала, которая позволяет хотя бы приблизительно разные системы сравнивать по основным параметрам.


    1. mvs
      13.06.2019 00:05

      ИМХО, unixbench и fio объективнее в качестве «единой шкалы». Многие iaas-провайдеры ловятся на узких местах


      1. aik
        13.06.2019 06:20

        Тут всё же комплексный минитест — и диск, и процессор, и сеть.
        Когда мне надо серьёзно сравнить, то использую другие инструменты. А тут быстрое сравнение за несколько секунд, в большинстве случаев из-под юзера и без установки дополнительного софта.


  1. capitannemo
    12.06.2019 22:44

    Спасибо за статью и за скрипт из первого комментария, он однозначно в копилку.
    Но если упомянут Sysbench, то нужно и HammerDB упомянуть.
    Производительность баз данных очень часто измеряют именно им.


  1. polar_yogi
    13.06.2019 12:45

    SWAT не обязателен для использования vdbench, это одна из возможностей.
    vdbench работает самостоятельно, для тестов пишется управляющий файл в котором можно задать — число процессов, количество iops, размер блоков, участки устройства на который производится ввод-вывод, соотношение чтение и записи и т.д. В этом отношении — очень гибкий инструмент. Как следствие — мануал достаточно объемный.