Benchmarks för Linux-servrar: ett urval av öppna verktyg
Vi fortsätter att prata om verktyg för att bedöma CPU-prestanda på Linux-maskiner. Idag i materialet: temci, uarch-bench, likwid, perf-tools och llvm-mca.
Detta är ett verktyg för att uppskatta exekveringstiden för två program. I huvudsak låter det dig jämföra körtiden för två applikationer. Författaren till verktyget var en student från Tyskland, Johannes Bechberger, som utvecklade det som en del av sin grundexamen 2016. Idag är ett verktyg levererad av licensierad under GNU General Public License.
Johannes ville skapa ett verktyg som skulle göra det möjligt för honom att mäta prestandan hos ett datorsystem i en kontrollerad miljö. Därför är en av huvuddragen hos temci möjligheten att sätta upp en testmiljö. Till exempel, kan man: ändra CPU-frekvenshanterarens inställningar, inaktivera Hyper Threading och L1- och L2-cacher, stäng av turboläget på Intel-processorer etc. För benchmarking använder temci verktyg tid, perf_stat и getrusage.
Så här ser verktyget ut i det första fallet:
# 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
Baserat på benchmarkingresultaten genererar systemet bekväm rapport med diagram, tabeller och grafer, vilket skiljer temci från liknande lösningar.
Bland bristerna med temci sticker dess "ungdom" ut. På grund av detta han allt stöds inte hårdvaru- och mjukvarukonfigurationer. Det är till exempel svårt att köra på macOS, och vissa funktioner är inte tillgängliga på ett ARM-baserat system. I framtiden kan situationen förändras, eftersom författaren aktivt utvecklar projektet, och antalet stjärnor på GitHub ökar gradvis - för inte så länge sedan temci ens diskuteras i kommentarerna på Hacker News.
Ett verktyg för att utvärdera prestandan hos lågnivå-CPU-funktioner, utvecklat av ingenjören Travis Downs (Travis Downs). Den senaste tiden har han bloggat Prestanda är viktigt på GitHub Pages, som talar om benchmarkingverktyg och andra relaterade saker. I allmänhet har uarch-bench precis börjat bli populär, men det är redan ganska vanligt nämnts invånare i Hacker News i tematiska trådar som ett go-to-verktyg för benchmarking.
Uarch-bench låter dig utvärdera minnesprestanda, parallell dataladdningshastighet och rengöringsarbete YMM registrerar. Hur benchmarkingresultaten som genereras av programmet ser ut kan hittas i det officiella arkivet på botten av sidan.
Det är värt att notera att uarch-bänk, som temci, inaktiverar Intel Turbo Boost-funktion (den ökar automatiskt processorns klockhastighet under belastning) så att testresultaten är konsekventa.
För närvarande är projektet i ett tidigt utvecklingsstadium, så uarch-bench har ingen detaljerad dokumentation, och dess drift kan innehålla buggar - till exempel, svårigheter är kända med lansering på Ryzen. Dessutom stöds endast riktmärken för x86-arkitekturer. Författaren lovar att lägga till mer funktionalitet i framtiden och inbjuder dig att vara med i utvecklingen.
Detta är en uppsättning verktyg för att utvärdera prestandan hos Linux-maskiner med Intel-, AMD- och ARMv8-processorer. Det skapades under överinseende av det tyska förbundsministeriet för utbildning och forskning 2017 och släpptes som öppen källkod.
Bland likwid-verktygen kan vi lyfta fram likwid-powermeter, som visar information från RAPL-register om ström som förbrukas av systemet, samt likwid-setFrequency, som låter dig styra processorfrekvensen. Du kan se hela listan hitta i förvaret.
Verktyget används av ingenjörer som är involverade i HPC-forskning. Till exempel med likwid arbetar en grupp specialister från Regional Computing Center vid universitetet i Erlangen-Nürnberg (RRZE) i Tyskland. Hon deltar också aktivt i utvecklingen av denna uppsättning verktyg.
Detta verktyg för att analysera prestanda för Linux-servrar lämnats Brendan Gregg. Han är en av utvecklarna DTrace — Ett dynamiskt spårningsramverk för felsökning av applikationer i realtid.
perf-tools är baserat på perf_events och ftrace kärndelsystem. Deras verktyg låter dig analysera I/O-latens (iosnoop), spåra systemanropsargument (unccount, funclower, funcgraph och functrace) och samla in statistik om "träffar" i filcachen (cachestat). I det senare fallet ser kommandot ut så här:
En ganska stor gemenskap har bildats runt instrumentet (nästan 6 tusen stjärnor på GitHub). Och det finns företag som aktivt använder till exempel perf-tools Netflix. Men verktyget utvecklas och modifieras vidare (även om uppdateringar har släppts ganska sällan på sistone). Därför kan fel uppstå i dess funktion - författaren skriver att perf-tools ibland orsakar kärnpanik.
Ett verktyg som förutsäger hur många datorresurser maskinkod kommer att kräva på olika processorer. Hon utvärderar Instruktioner per cykel (IPC) och belastningen på hårdvaran som en viss applikation genererar.
llvm-mca presenterades 2018 som en del av projektet LLVM, som utvecklar ett universellt system för analys, transformation och optimering av program. Det är känt att författarna till llvm-mca inspirerades av en lösning för att analysera mjukvarans prestanda IACA från Intel och försökte skapa ett alternativ. Och enligt användarna påminner verktygets produktion (deras layout och kvantitet) verkligen om IACA - exempel finns här. Men llvm-mca accepterar endast AT&T-syntax, så du kommer troligen att behöva använda omvandlare för att arbeta med det.
Vad vi skriver om på våra bloggar och sociala nätverk: