Бенчмарки для серверов на Linux: подборка открытых инструментов

в 9:39, , рубрики: 1cloud, likwid, linux, llvm-mca, perf-tools, temci, uarch-bench, бенчмаркинг, Блог компании 1cloud.ru, Настройка Linux, Разработка под Linux, Серверное администрирование, системное администрирование

Продолжаем рассказывать об инструментах для оценки производительности CPU на Linux-машинах. Сегодня в материале: temci, uarch-bench, likwid, perf-tools и llvm-mca.

Больше бенчмарков:


Бенчмарки для серверов на Linux: подборка открытых инструментов - 1
Фото — Lukas Blazek — Unsplash


temci

Это — инструмент для оценки времени выполнения двух программ. По сути, она позволяет сравнить время исполнения двух приложений. Автором утилиты выступил студент из Германии Йоханнес Бехбергер (Johannes Bechberger), который разработал ее в рамках бакалаврской выпускной работы в 2016 году. Сегодня инструмент распространяется по лицензии GNU General Public License.

Йоханнес хотел создать инструмент, который бы позволил измерять производительность вычислительной системы в контролируемом окружении. Поэтому одной из главных особенностей temci является возможность настроить тестовую среду. Например, можно: изменить настройки диспетчера управления частотой CPU, отключить hyper-threading и кэши L1 и L2, выключить турборежим на процессорах Intel и др. Для бенчмаркинга temci использует инструменты time, perf_stat и getrusage.

Вот так выглядит работа утилиты в первом случае:

# compare the run times of two programs, running them each 20 times
> temci short exec "sleep 0.1" "sleep 0.2" --runs 20
Benchmark 20 times                [####################################]  100%
Report for single runs
sleep 0.1            (   20 single benchmarks)
     avg_mem_usage mean =           0.000, deviation =   0.0
     avg_res_set   mean =           0.000, deviation =   0.0
     etime         mean =      100.00000m, deviation = 0.00000%
     max_res_set   mean =         2.1800k, deviation = 3.86455%
     stime         mean =           0.000, deviation =   0.0
     utime         mean =           0.000, deviation =   0.0

sleep 0.2            (   20 single benchmarks)
     avg_mem_usage mean =           0.000, deviation =   0.0
     avg_res_set   mean =           0.000, deviation =   0.0
     etime         mean =      200.00000m, deviation = 0.00000%
     max_res_set   mean =         2.1968k, deviation = 3.82530%
     stime         mean =           0.000, deviation =   0.0
     utime         mean =           0.000, deviation =   0.0

По результатам бенчмаркинга система формирует удобный отчет со схемами, таблицами и графиками, что отличает temci от аналогичных решений.

Из недостатков temci выделяется его «молодость». Из-за этого он поддерживает не все конфигурации аппаратного и программного обеспечения. Например, его сложно запустить под macOS, а на системе с процессором ARM недоступны некоторые функции. В будущем ситуация может измениться, так как автор активно развивает проект, и количество звезд на GitHub постепенно увеличивается — не так давно temci даже обсуждали в комментариях на Hacker News.


uarch-bench

Утилита для оценки производительности низкоуровневых функций CPU, которую разработал инженер Тревис Даунс (Travis Downs). С недавних пор он ведет свой блог Performance Matters на GitHub Pages, в котором рассказывает об инструментах для бенчмаркинга и других связанных с ними вещах. В целом uarch-bench пока только начинает набирать популярность, но уже довольно часто упоминается резидентами Hacker News в тематических тредах как go-to инструмент для бенчмаркинга.

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

Стоит отметить, что uarch-bench, как и temci, отключает функцию Intel Turbo Boost (она автоматически увеличивает тактовую частоту процессора под нагрузкой), чтобы результаты тестирования были консистентными.

Пока что проект находится на ранних этапах разработки, поэтому у uarch-bench нет подробной документации, а в его работе могут встречаться баги — например, известны сложности с запуском на Ryzen. Также поддерживаются лишь бенчмарки для архитектур x86. Автор обещает добавить больше функциональности в будущем и приглашает присоединиться к разработке.


likwid

Это — набор инструментов для оценки производительности Linux-машин с процессорами Intel, AMD и ARMv8. Он создан под эгидой Федерального министерства образования и научных исследований Германии в 2017 году и передан в open source.

Среди инструментов likwid можно выделить likwid-powermeter, который выводит информацию из RAPL-регистров о потребляемой системой мощности, а также likwid-setFrequencies — позволяет контролировать частоту процессора. Полный список вы можете найти в репозитории.

Инструментом пользуются инженеры, занимающиеся исследованиями в области HPC. Например, с likwid работает группа специалистов из Регионального вычислительного центра университета Эрлангена — Нюрмберга (RRZE) в Германии. Она же принимает активное участие в разработке этого набора инструментов.


Бенчмарки для серверов на Linux: подборка открытых инструментов - 2
Фото — Clem Onojeghuo — Unsplash


perf-tools

Этот инструмент для анализа производительности Linux-серверов представил Брендан Грег (Brendan Gregg). Он один из разработчиков DTrace — фреймворка динамической трассировки для отладки приложений в реальном времени.

В основе perf-tools лежат подсистемы ядра perf_events и ftrace. Их утилиты позволяют проанализировать задержку ввода/вывода (iosnoop), отследить аргументы обращения к системным вызовам (unccount, funcslower, funcgraph и functrace) и собрать статистику «попаданий» в файловый кэш (cachestat). В последнем случае команда выглядит вот так:

# ./cachestat -t
Counting cache functions... Output every 1 seconds.
TIME HITS MISSES DIRTIES RATIO BUFFERS_MB CACHE_MB
08:28:57 415 0 0 100.0% 1 191
08:28:58 411 0 0 100.0% 1 191
08:28:59 362 97 0 78.9% 0 8
08:29:00 411 0 0 100.0% 0 9

Вокруг инструмента сформировалось довольно обширное сообщество (почти 6 тыс. звезд на GitHub). И есть компании, которые активно используют perf-tools, например Netflix. Но инструмент дорабатывается и модифицируется (хотя в последнее время обновления выходят довольно редко). Поэтому в его работе могут возникать ошибки — автор пишет, что порой perf-tools вызывает kernel panic.


llvm-mca

Утилита, которая прогнозирует, сколько вычислительных ресурсов потребуется машинному коду на разных CPU. Она оценивает Instructions Per Cycle (IPC) и нагрузку на аппаратное обеспечение, которую генерирует то или иное приложение.

llvm-mca представили в 2018 году в рамках проекта LLVM, который занимается разработкой универсальной системы анализа, трансформации и оптимизации программ. Известно, что авторы llvm-mca вдохновлялись решением для анализа производительности софта IACA от Intel и стремились создать его альтернативу. И по словам пользователей, выходные данные инструмента (их разметка и количество) действительно напоминают IACA — пример можно найти здесь. Однако llvm-mca воспринимает только AT&T-синтаксис, поэтому для работы с ним, скорее всего, придется использовать конвертеры.


О чем мы пишем в наших блогах и социальных сетях:

Бенчмарки для серверов на Linux: подборка открытых инструментов - 3 «Мат. модель с Уолл-стрит» или как оптимизировать затраты на облако

Бенчмарки для серверов на Linux: подборка открытых инструментов - 4 Как обезопасить Linux-систему: 10 советов
Бенчмарки для серверов на Linux: подборка открытых инструментов - 5 Минимизация рисков: как не потерять ваши данные

Бенчмарки для серверов на Linux: подборка открытых инструментов - 6 Книги для тех, кто уже занимается системным администрированием или только планирует начать
Бенчмарки для серверов на Linux: подборка открытых инструментов - 7 Подборка: пять книг и один курс по сетям


Бенчмарки для серверов на Linux: подборка открытых инструментов - 8Мы в 1cloud.ru предлагаем бесплатную услугу «DNS-хостинг». Управлять DNS-записями у нас можно в едином личном кабинете.


Автор: 1cloud

Источник


* - обязательные к заполнению поля