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

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

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



    Фото — 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) в Германии. Она же принимает активное участие в разработке этого набора инструментов.





    Фото — 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-систему: 10 советов
    Минимизация рисков: как не потерять ваши данные

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



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


    • +13
    • 4,2k
    • 1
    1cloud.ru
    305,01
    IaaS, VPS, VDS, Частное и публичное облако, SSL
    Поделиться публикацией

    Комментарии 1

      0

      Imho такие статьи без практического примера бесполезны.

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

      Самое читаемое