Benchmarky pre servery Linux: výber otvorených nástrojov
Pokračujeme v rozprávaní o nástrojoch na hodnotenie výkonu CPU na počítačoch so systémom Linux. Dnes v materiáli: temci, uarch-bench, likwid, perf-tools a llvm-mca.
Toto je nástroj na odhadnutie času vykonávania dvoch programov. V podstate vám umožňuje porovnať čas vykonávania dvoch aplikácií. Autorom utility bol študent z Nemecka Johannes Bechberger, ktorý ju vyvinul v rámci svojej bakalárskej práce v roku 2016. Dnešný nástroj distribuovaný pod licenciou GNU General Public License.
Johannes chcel vytvoriť nástroj, ktorý by mu umožnil merať výkon výpočtového systému v kontrolovanom prostredí. Preto je jednou z hlavných vlastností temci možnosť nastaviť testovacie prostredie. Napríklad, jeden môže: zmeniť nastavenia správcu frekvencie CPU, zakázať hyper závitovanie a L1 a L2 cache, vypnite turbo režim na procesoroch Intel atď. Na benchmarking používa temci nástroje čas, výkon_stat и getrusage.
Takto vyzerá pomôcka v prvom prípade:
# 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 základe výsledkov benchmarkingu systém generuje pohodlná správa s diagramami, tabuľkami a grafmi, čím sa temci odlišujú od podobných riešení.
Medzi nedostatkami temci vyniká jeho „mladosť“. Kvôli tomu on nie všetko je podporované hardvérové a softvérové konfigurácie. Napríklad je ťažké spustiť v systéme MacOS a niektoré funkcie nie sú dostupné v systéme založenom na ARM. V budúcnosti sa situácia môže zmeniť, keďže autor projekt aktívne rozvíja a počet hviezdičiek na GitHub sa postupne zvyšuje - nie je to tak dávno temci dokonca diskutované v komentároch na Hacker News.
Pomôcka na hodnotenie výkonu nízkoúrovňových funkcií CPU, vyvinutý inžinierom Travisom Downsom (Travis Downs). V poslednej dobe sa venuje blogovaniu Na veciach výkonu na stránkach GitHub, ktorý hovorí o nástrojoch na benchmarking a ďalších súvisiacich veciach. Vo všeobecnosti si uarch-bench len začína získavať na popularite, ale je to už celkom bežné spomínané obyvatelia Hacker News v tematických vláknach ako nástroj na porovnávanie.
Uarch-bench umožňuje vyhodnotiť výkon pamäte, rýchlosť paralelného načítania dát a čistiace práce YMM registre. Ako vyzerajú výsledky benchmarkingu generované programom nájdete v oficiálnom úložisku v spodnej časti stránky.
Stojí za zmienku, že uarchová lavica, ako temci, odpojí Funkcia Intel Turbo Boost (automaticky zvyšuje frekvenciu procesora pri zaťažení), aby boli výsledky testov konzistentné.
Projekt je zatiaľ v počiatočnom štádiu vývoja, takže uarch-bench nemá podrobnú dokumentáciu a jeho fungovanie môže obsahovať chyby - napr. ťažkosti sú známe so spustením na Ryzen. Podporované sú tiež iba benchmarky pre architektúry x86. Autor sľubuje, že v budúcnosti pridá ďalšie funkcie a pozýva vás, aby ste sa zapojili do vývoja.
Ide o sadu nástrojov na hodnotenie výkonu linuxových strojov s procesormi Intel, AMD a ARMv8. Bol vytvorený pod záštitou nemeckého federálneho ministerstva školstva a výskumu v roku 2017 a uvoľnený do open source.
Z nástrojov likwid môžeme vyzdvihnúť likwid-powermeter, ktorý zobrazuje informácie z registrov RAPL o spotrebe energie systémom, ako aj likwid-setFrequencies, ktorý umožňuje ovládať frekvenciu procesora. Môžete si pozrieť úplný zoznam nájsť v úložisku.
Tento nástroj používajú inžinieri zapojení do výskumu HPC. Napríklad s likwid práce skupina špecialistov z Regionálneho výpočtového centra Univerzity Erlangen-Norimberg (RRZE) v Nemecku. Aktívne sa podieľa aj na vývoji tohto súboru nástrojov.
Tento nástroj na analýzu výkonu serverov Linux predložené Brendan Gregg. Je jedným z vývojárov DTrace — rámec dynamického sledovania na ladenie aplikácií v reálnom čase.
perf-tools je založený na podsystémoch jadra perf_events a ftrace. Ich nástroje vám umožňujú analyzovať I/O latenciu (iosnoop), sledovať argumenty systémových volaní (unccount, funcslower, funcgraph a functrace) a zbierať štatistiky o „zásahoch“ do vyrovnávacej pamäte súborov (cachestat). V druhom prípade príkaz vyzerá takto:
Okolo nástroja sa vytvorila pomerne veľká komunita (takmer 6 tisíc hviezdičiek na GitHub). A sú firmy, ktoré aktívne využívajú napríklad perf-tools Netflix. Nástroj sa však ďalej vyvíja a upravuje (hoci aktualizácie sa v poslednej dobe vydávajú pomerne zriedka). Preto sa pri jeho prevádzke môžu vyskytnúť chyby – autor píše, že niekedy perf-tools vyvoláva v jadre paniku.
Nástroj, ktorý predpovedá, koľko výpočtových zdrojov bude strojový kód vyžadovať na rôznych CPU. Ona hodnotí Pokyny na cyklus (IPC) a zaťaženie hardvéru, ktoré generuje konkrétna aplikácia.
llvm-mca bol predstavený v roku 2018 ako súčasť projektu Llvm, ktorá vyvíja univerzálny systém na analýzu, transformáciu a optimalizáciu programov. Je známe, že autori llvm-mca sa inšpirovali riešením na analýzu výkonnosti softvéru IACA od Intelu a snažili sa vytvoriť alternatívu. A podľa používateľov sa výstup nástroja (ich rozloženie a množstvo) skutočne podobá IACA – príklad nájdete tu. Avšak llvm-mca iba akceptuje Syntax AT&T, takže na prácu s ním budete s najväčšou pravdepodobnosťou musieť použiť konvertory.
O čom píšeme na našich blogoch a sociálnych sieťach: