- PVSM.RU - https://www.pvsm.ru -
Продолжаем рассказывать об инструментах для оценки производительности CPU на Linux-машинах. Сегодня в материале: temci, uarch-bench, likwid, perf-tools и llvm-mca.
Больше бенчмарков:
[4]
Фото — Lukas Blazek [5] — Unsplash
Это — инструмент для оценки времени выполнения двух программ. По сути, она позволяет сравнить время исполнения двух приложений. Автором утилиты выступил студент из Германии Йоханнес Бехбергер (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.
Утилита для оценки производительности низкоуровневых функций 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. Автор обещает добавить больше функциональности в будущем и приглашает присоединиться к разработке.
Это — набор инструментов для оценки производительности Linux-машин с процессорами Intel, AMD и ARMv8. Он создан под эгидой Федерального министерства образования и научных исследований Германии в 2017 году и передан в open source.
Среди инструментов likwid можно выделить likwid-powermeter, который выводит информацию из RAPL-регистров о потребляемой системой мощности, а также likwid-setFrequencies — позволяет контролировать частоту процессора. Полный список вы можете найти в репозитории [24].
Инструментом пользуются инженеры, занимающиеся исследованиями в области HPC. Например, с likwid работает [25] группа специалистов из Регионального вычислительного центра университета Эрлангена — Нюрмберга (RRZE) в Германии. Она же принимает активное участие в разработке этого набора инструментов.
Фото — Clem Onojeghuo [26] — Unsplash
Этот инструмент для анализа производительности 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.
Утилита, которая прогнозирует, сколько вычислительных ресурсов потребуется машинному коду на разных CPU. Она оценивает [32] Instructions Per Cycle (IPC [33]) и нагрузку на аппаратное обеспечение, которую генерирует то или иное приложение.
llvm-mca представили в 2018 году в рамках проекта LLVM [34], который занимается разработкой универсальной системы анализа, трансформации и оптимизации программ. Известно, что авторы llvm-mca вдохновлялись решением для анализа производительности софта IACA от Intel [35] и стремились создать его альтернативу. И по словам пользователей, выходные данные инструмента (их разметка и количество) действительно напоминают IACA — пример можно найти здесь [36]. Однако llvm-mca воспринимает только AT&T-синтаксис [37], поэтому для работы с ним, скорее всего, придется использовать конвертеры.
О чем мы пишем в наших блогах и социальных сетях:
«Мат. модель с Уолл-стрит» или как оптимизировать затраты на облако [38]
Как обезопасить Linux-систему: 10 советов [39]
Минимизация рисков: как не потерять ваши данные [40]Книги для тех, кто уже занимается системным администрированием или только планирует начать [41]
Подборка: пять книг и один курс по сетям [42]
Автор: 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
Нажмите здесь для печати.