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:
Zdjęcie — Czym tak naprawdę jest problem
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 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, : zmienić ustawienia menedżera zarządzania częstotliwością CPU, wyłączyć oraz pamięci podręczne L1 i L2, wyłączyć tryb turbo na procesorach Intel i inne. Do benchmarkingu temci wykorzystuje narzędzia , i .
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 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 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 na Hacker News.
Narzędzie do oceny wydajności niskopoziomowych funkcji CPU, które opracował inżynier Travis Downs (). Od niedawna prowadzi bloga 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 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 . Można znaleźć, jak wyglądają wyniki benchmarkingowe generowane przez program, na dole strony.
Warto zauważyć, że uarch-bench, podobnie jak temci, 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, 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.
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 .
Narzędzia te są wykorzystywane przez inżynierów zajmujących się badaniami w dziedzinie HPC. Na przykład, z likwid grupa specjalistów z Regionalnego Centrum Obliczeniowego Uniwersytetu w Erlangen-Norymberdze (RRZE) w Niemczech. Oni aktywnie uczestniczą w rozwoju tego zestawu narzędzi.

Zdjęcie — Czym tak naprawdę jest problem
To narzędzie do analizy wydajności serwerów Linux Brendan Gregg. Jest jednym z twórców – 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ść (). I są firmy, które aktywnie korzystają z perf-tools, na przykład . 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.
Narzędzie, które prognozuje, ile zasobów obliczeniowych będzie potrzebnych kodowi maszynowemu na różnych CPU. Ona Instrukcje na cykl () oraz obciążenie sprzętu, które generuje konkretna aplikacja.
llvm-mca został zaprezentowany w 2018 roku w ramach projektu , 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 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 . Jednak llvm-mca akceptuje tylko , dlatego do pracy z nim prawdopodobnie będzie trzeba użyć konwerterów.
O czym piszemy w naszych blogach i mediach społecznościowych:
![]()
![]()
![]()
![]()
![]()
W 1cloud.pl oferujemy bezpłatną usługę „”. Zarządzać rekordami DNS można u nas w jednym, wspólnym panelu.
Źródło: habr.com
