Benchmarki dla serwerów Linux: wybór otwartych narzędzi
Nadal mówimy o narzędziach do oceny wydajności procesora na komputerach z systemem Linux. Dziś w materiale: temci, uarch-bench, likwid, perf-tools i llvm-mca.
Jest to narzędzie służące do szacowania czasu wykonania dwóch programów. Zasadniczo pozwala porównać czas wykonania dwóch aplikacji. Autorem narzędzia był student z Niemiec Johannes Bechberger, który opracował je w ramach swojej pracy licencjackiej w 2016 roku. Dzisiejsze narzędzie dystrybuowane przez licencjonowane w ramach Powszechnej Licencji Publicznej GNU.
Johannes chciał stworzyć narzędzie, które pozwoliłoby mu zmierzyć wydajność systemu komputerowego w kontrolowanym środowisku. Dlatego jedną z głównych cech temci jest możliwość skonfigurowania środowiska testowego. Na przykład, można: zmień ustawienia menedżera częstotliwości procesora, wyłącz Hyper Threading oraz pamięci podręczne L1 i L2, wyłącz tryb turbo na procesorach Intel itp. Do testów porównawczych temci używa narzędzi czas, perf_stat и przebranie.
Tak wygląda narzędzie 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 odróżnia temci od podobnych rozwiązań.
Wśród wad temci wyróżnia się „młodość”. Z tego powodu on nie wszystko jest obsługiwane konfiguracji sprzętu i oprogramowania. Na przykład trudno jest uruchomić system na macOS, a niektóre funkcje nie są dostępne w systemie opartym na ARM. W przyszłości sytuacja może się zmienić, gdyż autor aktywnie rozwija projekt, a liczba gwiazdek na GitHubie stopniowo rośnie – jeszcze nie tak dawno temci omówione w komentarzach w Hacker News.
Narzędzie do oceny wydajności funkcji procesora niskiego poziomu, opracowane przez inżyniera Travisa Downsa (Travisa Downsa). Ostatnio udziela się na blogu Wydajność ma znaczenie na GitHub Pages, gdzie jest mowa o narzędziach do testów porównawczych i innych powiązanych rzeczach. Ogólnie rzecz biorąc, uarch-bench dopiero zaczyna zyskiwać na popularności, ale jest już dość powszechny wspomniane mieszkańców Hacker News w wątkach tematycznych jako podstawowe narzędzie do testów porównawczych.
Uarch-bench pozwala ocenić wydajność pamięci, prędkość równoległego ładowania danych i pracę czyszczenia Rejestry YMM. Można zobaczyć jak wyglądają wyniki benchmarkingu wygenerowane przez program w oficjalnym repozytorium na dole strony.
Warto dodać, że uarch-bench, podobnie jak temci, rozłącza się Funkcja Intel Turbo Boost (automatycznie zwiększa taktowanie procesora pod obciążeniem), dzięki czemu wyniki testów są spójne.
Na razie projekt jest we wczesnej fazie rozwoju, więc uarch-bench nie posiada szczegółowej dokumentacji, a jego działanie może zawierać błędy - np. znane są trudności wraz z premierą na Ryzen. Obsługiwane są także tylko testy porównawcze dla architektur x86. Autor obiecuje dodać więcej funkcjonalności w przyszłości i zaprasza do przyłączenia się do rozwoju.
Jest to zestaw narzędzi do oceny wydajności maszyn Linux z procesorami Intel, AMD i ARMv8. Został stworzony pod patronatem niemieckiego Federalnego Ministerstwa Edukacji i Badań w 2017 roku i udostępniony jako open source.
Wśród narzędzi likwid wyróżnić możemy likwid-powermeter, który wyświetla informacje z rejestrów RAPL o poborze mocy przez system, a także likwid-setFrequency, który pozwala kontrolować częstotliwość procesora. Możesz zobaczyć pełną listę znajdź w repozytorium.
Z narzędzia korzystają inżynierowie zajmujący się badaniami HPC. Na przykład z likwid działa grupa specjalistów z Regionalnego Centrum Obliczeniowego Uniwersytetu Erlangen-Norymberga (RRZE) w Niemczech. Bierze również czynny udział w rozwoju tego zestawu narzędzi.
To narzędzie do analizy wydajności serwerów Linux wprowadzono Brendana Gregga. Jest jednym z deweloperów DTrace — dynamiczna platforma śledzenia do debugowania aplikacji w czasie rzeczywistym.
perf-tools opiera się na podsystemach jądra perf_events i ftrace. Ich narzędzia pozwalają analizować opóźnienia we/wy (iosnoop), śledzić argumenty wywołań systemowych (unccount, funcslower, funcgraph i functrace) oraz zbierać statystyki dotyczące „trafień” w pamięci podręcznej plików (cachestat). W tym drugim przypadku polecenie wygląda następująco:
Wokół instrumentu utworzyła się dość duża społeczność (prawie 6 tysięcy gwiazd na GitHubie). Istnieją na przykład firmy, które aktywnie korzystają z narzędzi perf Netflix. Narzędzie jest jednak dalej rozwijane i modyfikowane (choć ostatnio aktualizacje pojawiają się dość rzadko). Dlatego mogą wystąpić błędy w jego działaniu - autor pisze, że czasami perf-tools powoduje panikę jądra.
Narzędzie, które przewiduje, ile zasobów obliczeniowych będzie wymagał kod maszynowy na różnych procesorach. Ona ocenia Instrukcje na cykl (IPC) oraz obciążenie sprzętu generowane przez konkretną aplikację.
W ramach projektu w 2018 roku zaprezentowano llvm-mca LLVM, która opracowuje uniwersalny system analizy, transformacji i optymalizacji programów. Wiadomo, że twórcy llvm-mca zainspirowali się rozwiązaniem do analizy wydajności oprogramowania IACA firmy Intel i starał się stworzyć alternatywę. Według użytkowników wyniki narzędzia (ich układ i ilość) naprawdę przypominają IACA - przykład można znaleźć tutaj. Jednak llvm-mca akceptuje tylko Składnia AT&T, więc najprawdopodobniej będziesz musiał użyć konwerterów, aby z nim pracować.
O czym piszemy na naszych blogach i portalach społecznościowych: