Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi

Kontynuujemy opowieść o narzędziach do oceny wydajności CPU na maszynach Linux. Dziś w materiale: temci, uarch-bench, likwid, perf-tools i llvm-mca.

Więcej benchmarków:

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi
Zdjęcie — Lukas Blazek Czym tak naprawdę jest problem

temci

To narzędzie do oceny czasu wykonania dwóch programów. W zasadzie pozwala na porównanie czasu realizacji dwóch aplikacji. Autorem narzędzia jest student z Niemiec, Johannes Bechberger, który opracował je w ramach pracy licencjackiej w 2016 roku. Dziś to narzędzie rozpowszechniany ma licencję GNU General Public License.

Johannes chciał stworzyć narzędzie, które pozwoliłoby mierzyć wydajność systemu obliczeniowego w kontrolowanym środowisku. Dlatego jedną z głównych cech temci jest możliwość dostosowania środowiska testowego. Na przykład, można: zmienić ustawienia menedżera zarządzania częstotliwością CPU, wyłączyć hyper-threading oraz pamięci podręczne L1 i L2, wyłączyć tryb turbo na procesorach Intel i inne. Do benchmarkingu temci wykorzystuje narzędzia time, perf_stat i getrusage.

Tak wygląda działanie narzędzia w pierwszym przypadku:

# 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

Na podstawie wyników benchmarkingu system generuje wygodny raport z diagramami, tabelami i wykresami, co wyróżnia temci na tle podobnych rozwiązań.

Z wad temci wyróżnia się jego "młodość". Z tego powodu nie obsługuje wszystkich konfiguracji sprzętowych i programowych. Na przykład, trudno go uruchomić na macOS, a na systemie z procesorem ARM niektóre funkcje są niedostępne. W przyszłości sytuacja może się zmienić, ponieważ autor aktywnie rozwija projekt, a liczba gwiazdek na GitHubie stopniowo rośnie — niedawno temci nawet było omawiane w komentarzach na Hacker News.

uarch-bench

Narzędzie do oceny wydajności niskopoziomowych funkcji CPU, które opracował inżynier Travis Downs (Travis Downs). Od niedawna prowadzi bloga Performance Matters na GitHub Pages, na którym pisze o narzędziach do benchmarkingu i innych związanych tematach. Ogólnie rzecz biorąc, uarch-bench dopiero zaczyna zyskiwać popularność, ale już dość często wspomniano o jest wspominane przez członków Hacker News w tematycznych wątkach jako narzędzie go-to do benchmarkingu.

Uarch-bench pozwala ocenić wydajność pamięci, szybkość równoległego ładowania danych oraz działanie oczyszczania rejestrów YMM.. Można znaleźć, jak wyglądają wyniki benchmarkingowe generowane przez program, w oficjalnym repozytorium na dole strony.

Warto zauważyć, że uarch-bench, podobnie jak temci, wyłącza funkcję Intel Turbo Boost (automatycznie zwiększa ona częstotliwość zegara procesora pod obciążeniem), aby wyniki testów były spójne.

Jak na razie projekt znajduje się na wczesnym etapie rozwoju, więc uarch-bench nie ma szczegółowej dokumentacji, a w jego działaniu mogą występować błędy – na przykład, są znane problemy z uruchomieniem na Ryzenie. Obsługiwane są tylko benchmarki dla architektur x86. Autor obiecuje dodać więcej funkcjonalności w przyszłości i zaprasza do współpracy nad rozwojem.

likwid

To zestaw narzędzi do oceny wydajności maszyn Linux z procesorami Intel, AMD i ARMv8. Został stworzony pod egidą Federalnego Ministerstwa Edukacji i Badań Naukowych Niemiec w 2017 roku i przekazany na licencji open source.

Wśród narzędzi likwid można wyróżnić likwid-powermeter, który wyświetla informacje z rejestrów RAPL o zużywanej mocy przez system, a także likwid-setFrequencies – umożliwia kontrolowanie częstotliwości procesora. Pełną listę można znaleźć w repozytorium.

Narzędzia te są wykorzystywane przez inżynierów zajmujących się badaniami w dziedzinie HPC. Na przykład, z likwid pracuje grupa specjalistów z Regionalnego Centrum Obliczeniowego Uniwersytetu w Erlangen-Norymberdze (RRZE) w Niemczech. Oni aktywnie uczestniczą w rozwoju tego zestawu narzędzi.

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi
Zdjęcie — Clem Onojeghuo Czym tak naprawdę jest problem

perf-tools

To narzędzie do analizy wydajności serwerów Linux przedstawił Brendan Gregg. Jest jednym z twórców DTrace – frameworka do dynamicznego śledzenia do debugowania aplikacji w czasie rzeczywistym.

Perf-tools bazuje na podsystemach jądra perf_events i ftrace. Jego narzędzia pozwalają na analizę opóźnienia wejścia/wyjścia (iosnoop), śledzenie argumentów wywołań systemowych (unccount, funcslower, funcgraph i functrace) oraz zbieranie statystyk "trafień" w pamięci podręcznej plików (cachestat). W ostatnim przypadku komenda wygląda tak:

# ./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

Wokół narzędzia uformowała się dość szeroka społeczność (prawie 6 tys. gwiazdek na GitHubie). I są firmy, które aktywnie korzystają z perf-tools, na przykład Netflix. Jednak narzędzie jest wciąż rozwijane i modyfikowane (choć ostatnio aktualizacje pojawiają się dość rzadko). Dlatego podczas jego pracy mogą występować błędy - autor pisze, że czasami perf-tools powoduje awarię jądra.

llvm-mca

Narzędzie, które prognozuje, ile zasobów obliczeniowych będzie potrzebnych kodowi maszynowemu na różnych CPU. Ona estimates Instrukcje na cykl (IPC) oraz obciążenie sprzętu, które generuje konkretna aplikacja.

llvm-mca został zaprezentowany w 2018 roku w ramach projektu LLVM, który zajmuje się rozwojem uniwersalnego systemu analizy, transformacji i optymalizacji programów. Wiadomo, że autorzy llvm-mca inspirowali się rozwiązaniem do analizy wydajności oprogramowania IACA od Intela i dążyli do stworzenia jego alternatywy. I według użytkowników, dane wyjściowe narzędzia (ich układ i ilość) rzeczywiście przypominają IACA - przykład można znaleźć tutaj. Jednak llvm-mca akceptuje tylko synchronizacja AT&T, dlatego do pracy z nim prawdopodobnie będzie trzeba użyć konwerterów.

O czym piszemy w naszych blogach i mediach społecznościowych:

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi „Mat. model z Wall Street” czyli jak zoptymalizować koszty chmury

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi Jak zabezpieczyć system Linux: 10 wskazówek
Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi Minimalizacja ryzyka: jak nie stracić swoich danych

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi Książki dla tych, którzy już zajmują się administracją systemów lub dopiero planują zacząć
Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędzi Zestawienie: pięć książek i jeden kurs o sieciach

Benchmarki dla serwerów na Linuksie: zestawienie otwartych narzędziW 1cloud.pl oferujemy bezpłatną usługę „Hosting DNS”. Zarządzać rekordami DNS można u nas w jednym, wspólnym panelu.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster