- PVSM.RU - https://www.pvsm.ru -

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

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

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


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


temci [6]

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

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

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

# 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

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

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


uarch-bench [16]

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

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

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

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


likwid [24]

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

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

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


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


perf-tools [27]

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

В основе 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 [30]). И есть компании, которые активно используют perf-tools, например Netflix [31]. Но инструмент дорабатывается и модифицируется (хотя в последнее время обновления выходят довольно редко). Поэтому в его работе могут возникать ошибки — автор пишет, что порой perf-tools вызывает kernel panic.


llvm-mca [32]

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

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


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

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

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

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


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


Автор: 1cloud

Источник [44]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/328003

Ссылки в тексте:

[1] Sysbench, UnixBench, Phoronix Test Suite, Vdbench и IOzone: https://habr.com/ru/company/1cloud/blog/455834/

[2] Interbench, Fio, Hdparm, S и Bonnie: https://habr.com/ru/company/1cloud/blog/458204/

[3] Iometer, DD, vpsbench, HammerDB и 7-Zip: https://habr.com/ru/company/1cloud/blog/462777/

[4] Image: https://habr.com/ru/company/1cloud/blog/464763/

[5] Lukas Blazek: https://unsplash.com/photos/UAvYasdkzq8

[6] temci: https://github.com/parttimenerd/temci

[7] распространяется: https://temci.readthedocs.io/en/latest/license.html

[8] можно: https://temci.readthedocs.io/en/latest/temci_exec.html#plugins

[9] hyper-threading: https://ru.wikipedia.org/wiki/Hyper-threading

[10] time: https://www.gnu.org/software/time/

[11] perf_stat: http://man7.org/linux/man-pages/man1/perf-stat.1.html

[12] getrusage: http://man7.org/linux/man-pages/man2/getrusage.2.html

[13] удобный отчет: http://mostlynerdless.de/files/report_readme/report.html

[14] поддерживает не все: https://temci.readthedocs.io/en/latest/installation.html#system-requirements

[15] обсуждали в комментариях: https://news.ycombinator.com/item?id=20607042

[16] uarch-bench: https://github.com/travisdowns/uarch-bench

[17] Travis Downs: https://twitter.com/trav_downs

[18] Performance Matters: https://travisdowns.github.io/

[19] упоминается: https://news.ycombinator.com/item?id=18517081

[20] YMM-регистров: https://ru.wikipedia.org/wiki/AVX

[21] в официальном репозитории: https://github.com/travisdowns/uarch-bench/blob/master/uarch-bench.sh

[22] отключает: https://github.com/travisdowns/uarch-bench/blob/master/uarch-bench.sh#L66

[23] известны сложности: https://www.realworldtech.com/forum/?threadid=176780&curpostid=176816

[24] likwid: https://github.com/RRZE-HPC/likwid

[25] работает: https://hpc.fau.de/research/research-interests/

[26] Clem Onojeghuo: https://unsplash.com/photos/Apj4nSemkzk

[27] perf-tools: https://github.com/brendangregg/perf-tools

[28] представил: http://www.brendangregg.com/blog/2015-03-17/linux-performance-analysis-perf-tools.html

[29] DTrace: https://ru.wikipedia.org/wiki/DTrace

[30] почти 6 тыс. звезд на GitHub: https://github.com/brendangregg/perf-tools/stargazers

[31] Netflix: https://www.youtube.com/watch?v=UVM3WX8Lq2k

[32] llvm-mca: https://llvm.org/docs/CommandGuide/llvm-mca.html

[33] IPC: https://en.wikipedia.org/wiki/Instructions_per_cycle

[34] LLVM: http://llvm.org/

[35] IACA от Intel: https://stackoverflow.com/questions/26021337/what-is-iaca-and-how-do-i-use-it

[36] можно найти здесь: https://easyperf.net/blog/2018/04/03/Tools-for-microarchitectural-benchmarking#llvm-mca

[37] AT&T-синтаксис: https://ru.wikipedia.org/wiki/AT%26T-%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81

[38] «Мат. модель с Уолл-стрит» или как оптимизировать затраты на облако: https://habr.com/ru/company/1cloud/blog/464499/

[39] Как обезопасить Linux-систему: 10 советов: https://1cloud.ru/blog/linux-server-security-advices?utm_source=habrahabr&utm_medium=cpm&utm_campaign=bench4&utm_content=blog

[40] Минимизация рисков: как не потерять ваши данные: https://1cloud.ru/blog/minimizazia-it-riskov?utm_source=habrahabr&utm_medium=cpm&utm_campaign=bench4&utm_content=blog

[41] Книги для тех, кто уже занимается системным администрированием или только планирует начать: https://www.facebook.com/1cloudru/photos/a.1526614574327724/2382871935368646

[42] Подборка: пять книг и один курс по сетям : https://www.facebook.com/1cloudru/photos/a.1526614574327724/2372990136356826

[43] DNS-хостинг: https://1cloud.ru/services/dns?utm_source=habrahabr&utm_medium=cpm&utm_campaign=bench4&utm_content=site

[44] Источник: https://habr.com/ru/post/464763/?utm_campaign=464763&utm_source=habrahabr&utm_medium=rss