Бенчмарки для серверів на Linux: добірка відкритих інструментів
Ми продовжуємо говорити про інструменти для оцінки продуктивності ЦП на машинах Linux. Сьогодні в матеріалі: temci, uarch-bench, likwid, perf-tools і llvm-mca.
Це інструмент для оцінки часу виконання двох програм. По суті вона дозволяє порівняти час виконання двох додатків. Автором утиліти виступив студент із Німеччини Йоханнес Бехбергер (Johannes Bechberger), який розробив її у рамках бакалаврської випускної роботи у 2016 році. Сьогодні інструмент поширюється ліцензії GNU General Public License.
Йоханнес хотів створити інструмент, який дозволив би вимірювати продуктивність обчислювальної системи в контрольованому оточенні. Тому однією з головних особливостей temci є можливість настроїти тестове середовище. Наприклад, можна: змінити налаштування диспетчера керування частотою CPU, відключити гіперпоточності і кеші L1 і L2, вимкніть турбо-режим на процесорах Intel тощо. Для порівняльного аналізу temci використовує інструменти час, 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.
Утиліта для оцінки продуктивності низькорівневих функцій ЦП, розроблена інженером Тревісом Даунсом (Тревіс Даунс). З недавніх пір він веде свій блог Продуктивність має значення на GitHub Pages, в якому розповідає про інструменти для бенчмаркінгу та інші пов'язані з ними речі. Загалом uarch-bench поки що тільки починає набирати популярності, але вже досить часто згадується резиденти Hacker News у тематичних гілках як основний інструмент для порівняльного аналізу.
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-серверів представив Брендан Грегг. Він один із розробників DTrace — фреймворк динамічного трасування для налагодження додатків у реальному часі.
В основі perf-tools лежать підсистеми ядра perf_events та ftrace. Їхні утиліти дозволяють проаналізувати затримку введення/виводу (iosnoop), відстежити аргументи звернення до системних викликів (unccount, funcslower, funcgraph та functrace) та зібрати статистику «попадань» у файловий кеш (cachestat). В останньому випадку команда виглядає так:
Навколо інструменту сформувалося досить широке співтовариство (майже 6 тисяч зірок на GitHub). А є компанії, які активно використовують perf-інструменти, наприклад Netflix. Але інструмент допрацьовується та модифікується (хоча останнім часом оновлення виходять досить рідко). Тому в роботі можуть виникати помилки — автор пише, що часом perf-tools викликає kernel panic.
Утиліта, яка прогнозує, скільки обчислювальних ресурсів знадобиться машинному коду на різних CPU. Вона оцінює Інструкції за цикл (IPC) і навантаження на апаратне забезпечення, яке генерує той чи інший додаток.
llvm-mca представили у 2018 році в рамках проекту LLVM, який займається розробкою універсальної системи аналізу, трансформації та оптимізації програм. Відомо, що автори llvm-mca надихалися рішенням для аналізу продуктивності софту IACA від Intel та прагнули створити його альтернативу. І за словами користувачів, вихідні дані інструменту (їх розмітка та кількість) справді нагадують IACA — приклад можна знайти тут. Однак llvm-mca сприймає лише AT&T-синтаксисТому для роботи з ним, швидше за все, доведеться використовувати конвертери.
Про що ми пишемо в наших блогах та соціальних мережах: