Бенчмаркі для сервераў на Linux: падборка адчыненых прылад
Працягваем распавядаць аб прыладах для адзнакі прадукцыйнасці CPU на Linux-машынах. Сёння ў матэрыяле: temci, uarch-bench, likwid, perf-tools і llvm-mca.
Гэта - інструмент для ацэнкі часу выканання дзвюх праграм. Па сутнасці, яна дазваляе параўнаць час выканання двух дадаткаў. Аўтарам утыліты выступіў студэнт з Германіі Ёханэс Бехбергер (Johannes Bechberger), які распрацаваў яе ў рамках бакалаўрскай выпускной працы ў 2016 годзе. Сёння інструмент распаўсюджваецца па ліцэнзіі GNU General Public License.
Ёханэс хацеў стварыць інструмент, які б дазволіў вымяраць прадукцыйнасць вылічальнай сістэмы ў кантраляваным асяроддзі. Таму адной з галоўных асаблівасцяў temci з'яўляецца магчымасць наладзіць тэставае асяроддзе. Напрыклад, можна: змяніць налады дыспетчара кіравання частатой CPU, адключыць гіперпатокавасць і кэшы L1 і L2, выключыць турбарэжым на працэсарах Intel і інш. Для бенчмаркінгу temci выкарыстае прылады час, perf_stat и гэтрусаж.
Вось так выглядае праца ўтыліты ў першым выпадку:
# 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.
Утыліта для ацэнкі прадукцыйнасці нізкаўзроўневых функцый CPU, якую распрацаваў інжынер Трэвіс Даунс (Travis Downs). З нядаўніх часоў ён вядзе свой блог Прадукцыйнасць мае значэнне на GitHub Pages, у якім распавядае аб інструментах для бенчмаркетынгу і іншых звязаных з імі рэчах. У цэлым uarch-bench пакуль толькі пачынае набіраць папулярнасць, але ўжо даволі часта. згадваецца рэзідэнтамі Hacker News у тэматычных трэдах як go-to інструмент для бенчмаркетынгу.
Uarch-bench дазваляе ацаніць прадукцыйнасць памяці, хуткасць раўналежнай загрузкі дадзеных і працу па ачыстцы YMM-рэгістраў. Як выглядаюць вынікі бенчмаркетынгу, якія генерыруюцца праграмай, можна знайсці у афіцыйным рэпазітары унізе старонкі.
Варта адзначыць, што uarch-bench, як і temci, адключае функцыю Intel Turbo Boost (яна аўтаматычна павялічвае тактавую частату працэсара пад нагрузкай), каб вынікі тэсціравання былі кансістэнтнымі.
Пакуль што праект знаходзіцца на ранніх этапах распрацоўкі, таму ў uarch-bench няма падрабязнай дакументацыі, а ў яго працы могуць сустракацца багі - напрыклад, вядомыя складанасці з запускам на Ryzen. Таксама падтрымліваюцца толькі бенчмаркі для архітэктур x86. Аўтар абяцае дадаць больш функцыянальнасці ў будучыні і запрашае далучыцца да распрацоўкі.
Гэта – набор прылад для адзнакі прадукцыйнасці Linux-машын з працэсарамі Intel, AMD і ARMv8. Ён створаны пад эгідай Федэральнага міністэрства адукацыі і навуковых даследаванняў Германіі ў 2017 годзе і перададзены ў open source.
Сярод інструментаў likwid можна вылучыць likwid-powermeter, які выводзіць інфармацыю з RAPL-рэгістраў аб спажыванай сістэмай магутнасці, а таксама likwid-setFrequencies – дазваляе кантраляваць частату працэсара. Поўны спіс вы можаце знайсці ў рэпазітары.
Інструментам карыстаюцца інжынеры, якія займаюцца даследаваннямі ў вобласці HPC. Напрыклад, з likwid працуе група спецыялістаў з Рэгіянальнага вылічальнага цэнтра універсітэта Эрлангена - Нюрмберга (RRZE) у Германіі. Яна ж прымае актыўны ўдзел у распрацоўцы гэтага набору прылад.
Гэты інструмент для аналізу прадукцыйнасці Linux-сервераў. прадставіў Брэндан Грег (Brendan Gregg). Ён адзін з распрацоўшчыкаў DTrace - Фрэймворка дынамічнай трасіроўкі для адладкі прыкладанняў у рэальным часе.
У аснове perf-tools ляжаць падсістэмы ядра perf_events і ftrace. Іх утыліты дазваляюць прааналізаваць затрымку ўводу/высновы (iosnoop), адсачыць аргументы звароту да сістэмных выклікаў (unccount, funcslower, funcgraph і functrace) і сабраць статыстыку "трапленняў" у файлавы кэш (cachestat). У апошнім выпадку каманда выглядае вось так:
Вакол інструмента сфармавалася даволі шырокая супольнасць (амаль 6 тыс. зорак на GitHub). І ёсць кампаніі, якія актыўна выкарыстоўваюць perf-tools, напрыклад Netflix. Але прылада дапрацоўваецца і мадыфікуецца (хоць у апошні час абнаўленні выходзяць даволі рэдка). Таму ў яго працы могуць узнікаць памылкі - аўтар піша, што часам perf-tools выклікае kernel panic.
Утыліта, якая прагназуе, колькі вылічальных рэсурсаў запатрабуецца машыннаму коду на розных CPU. Яна ацэньвае Instructions Per Cycle (IPC) і нагрузку на апаратнае забеспячэнне, якую генеруе тое ці іншае прыкладанне.
llvm-mca прадставілі ў 2018 годзе ў рамках праекта LLVM, Які займаецца распрацоўкай універсальнай сістэмы аналізу, трансфармацыі і аптымізацыі праграм. Вядома, што аўтары llvm-mca натхняліся рашэннем для аналізу прадукцыйнасці софту. IACA ад Intel і імкнуліся стварыць яго альтэрнатыву. І па словах карыстачоў, выходныя дадзеныя прылады (іх разметка і колькасць) сапраўды нагадваюць IACA – прыклад можна знайсці тут. Аднак llvm-mca успрымае толькі AT&T-сінтаксіс, таму для працы з ім, хутчэй за ўсё, давядзецца выкарыстоўваць канвертары.
Пра што мы пішам у нашых блогах і сацыяльных сетках: