Хабрахабр

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

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

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


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

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

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

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

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

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

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

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

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

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

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


Фото — Clem Onojeghuo — Unsplash

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

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

# ./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.
Утилита, которая прогнозирует, сколько вычислительных ресурсов потребуется машинному коду на разных CPU. Она оценивает Instructions Per Cycle (IPC) и нагрузку на аппаратное обеспечение, которую генерирует то или иное приложение.

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

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

модель с Уолл-стрит» или как оптимизировать затраты на облако «Мат.

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

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

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

Кнопка «Наверх»
Закрыть