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

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

Більше тестів:

Бенчмарки для серверів на Linux: добірка відкритих інструментів
фото - Лукас Блажек - Unsplash

temci

Це інструмент для оцінки часу виконання двох програм. По суті вона дозволяє порівняти час виконання двох додатків. Автором утиліти виступив студент із Німеччини Йоханнес Бехбергер (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.

uarch-bench

Утиліта для оцінки продуктивності низькорівневих функцій ЦП, розроблена інженером Тревісом Даунсом (Тревіс Даунс). З недавніх пір він веде свій блог Продуктивність має значення на GitHub Pages, в якому розповідає про інструменти для бенчмаркінгу та інші пов'язані з ними речі. Загалом uarch-bench поки що тільки починає набирати популярності, але вже досить часто згадується резиденти Hacker News у тематичних гілках як основний інструмент для порівняльного аналізу.

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) в Німеччині. Вона ж бере активну участь у розробці цього набору інструментів.

Бенчмарки для серверів на Linux: добірка відкритих інструментів
фото - Клем Оноджехуо - Unsplash

perf-tools

Цей інструмент для аналізу продуктивності Linux-серверів представив Брендан Грегг. Він один із розробників 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-інструменти, наприклад Netflix. Але інструмент допрацьовується та модифікується (хоча останнім часом оновлення виходять досить рідко). Тому в роботі можуть виникати помилки — автор пише, що часом perf-tools викликає kernel panic.

llvm-mca

Утиліта, яка прогнозує, скільки обчислювальних ресурсів знадобиться машинному коду на різних CPU. Вона оцінює Інструкції за цикл (IPC) і навантаження на апаратне забезпечення, яке генерує той чи інший додаток.

llvm-mca представили у 2018 році в рамках проекту LLVM, який займається розробкою універсальної системи аналізу, трансформації та оптимізації програм. Відомо, що автори llvm-mca надихалися рішенням для аналізу продуктивності софту IACA від Intel та прагнули створити його альтернативу. І за словами користувачів, вихідні дані інструменту (їх розмітка та кількість) справді нагадують IACA — приклад можна знайти тут. Однак llvm-mca сприймає лише AT&T-синтаксисТому для роботи з ним, швидше за все, доведеться використовувати конвертери.

Про що ми пишемо в наших блогах та соціальних мережах:

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

Бенчмарки для серверів на Linux: добірка відкритих інструментів Як убезпечити Linux-систему: 10 порад
Бенчмарки для серверів на Linux: добірка відкритих інструментів Мінімізація ризиків: як не втратити ваші дані

Бенчмарки для серверів на Linux: добірка відкритих інструментів Книги для тих, хто вже займається системним адмініструванням або лише планує розпочати
Бенчмарки для серверів на Linux: добірка відкритих інструментів Підбірка: п'ять книг та один курс з мереж

Бенчмарки для серверів на Linux: добірка відкритих інструментівМи в 1cloud.ru пропонуємо безкоштовну послугуХостинг DNS" Керувати записами DNS можна в одному особистому обліковому записі.

Джерело: habr.com

Додати коментар або відгук