Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge

Wir setzen unsere Berichterstattung über Werkzeuge zur Bewertung der CPU-Leistung auf Linux-Maschinen fort. Heute im Material: temci, uarch-bench, likwid, perf-tools und llvm-mca.

Weitere Benchmarks:

Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge
Foto – Lukas Blazek – Unsplash

temci

Dies ist ein Werkzeug zur Bewertung der Ausführungszeit von zwei Programmen. Im Wesentlichen ermöglicht es den Vergleich der Ausführungszeit zweier Anwendungen. Der Autor des Tools ist der Student aus Deutschland, Johannes Bechberger, der es im Rahmen seiner Bachelorarbeit im Jahr 2016 entwickelt hat. Heute ist das Werkzeug wird verbreitet unter der GNU General Public License verfügbar.

Johannes wollte ein Werkzeug entwickeln, das es ermöglicht, die Leistung eines Computersystems in einer kontrollierten Umgebung zu messen. Daher ist eine der Hauptmerkmale von temci die Möglichkeit, die Testumgebung einzustellen. Zum Beispiel, kann man: die Einstellungen des CPU-Frequenzmanagement-Controllers ändern, Hyper-Threading und die Caches L1 und L2 deaktivieren, den Turbo-Modus bei Intel-Prozessoren abschalten usw. Für das Benchmarking verwendet temci die Werkzeuge time, perf_stat und getrusage.

So sieht die Ausführung des Werkzeugs im ersten Fall aus:

# 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

Basierend auf den Benchmarking-Ergebnissen erstellt das System einen anschaulichen Bericht mit Diagrammen, Tabellen und Grafiken, was temci von ähnlichen Lösungen unterscheidet.

Ein Nachteil von temci ist seine "Jugendlichkeit". Daher unterstützt es nicht alle Konfigurationen von Hardware und Software. Zum Beispiel ist es schwierig, es unter macOS auszuführen, und auf Systemen mit ARM-Prozessoren sind einige Funktionen nicht verfügbar. In Zukunft könnte sich die Situation ändern, da der Autor aktiv an dem Projekt arbeitet und die Anzahl der Sterne auf GitHub allmählich zunimmt – kürzlich wurde temci sogar in den Kommentaren diskutiert auf Hacker News.

uarch-bench

Ein Werkzeug zur Bewertung der Leistung von Low-Level-Funktionen der CPU, das von Ingenieur Travis Downs (Travis Downs) entwickelt wurde. Seit neuestem betreibt er seinen Blog Performance Matters auf GitHub Pages, in dem er über Werkzeuge für Benchmarking und andere verwandte Themen berichtet. Insgesamt beginnt uarch-bench bisher, an Popularität zu gewinnen, wird aber bereits recht häufig wird erwähnt von den Nutzern von Hacker News in thematischen Threads als Go-To-Werkzeug für das Benchmarking erwähnt.

Uarch-bench ermöglicht die Bewertung der Speichergeschwindigkeit, der Geschwindigkeit des parallelen Datenladevorgangs und der Funktionsweise der Bereinigung. YMM-Register. Wie die von der Software generierten Benchmark-Ergebnisse aussehen, erfahren Sie im offiziellen Repository. am Ende der Seite.

Es ist zu beachten, dass uarch-bench, wie auch temci, deaktiviert die Intel Turbo Boost-Funktion (die die Taktrate des Prozessors unter Last automatisch erhöht), um konsistente Testergebnisse zu erzielen.

Das Projekt befindet sich noch in einem frühen Entwicklungsstadium, daher gibt es keine ausführliche Dokumentation zu uarch-bench, und es können Bugs auftreten – zum Beispiel sind bekannte Schwierigkeiten mit dem Start auf Ryzen. Es werden zudem nur Benchmarks für x86-Architekturen unterstützt. Der Autor verspricht, in Zukunft mehr Funktionalitäten hinzuzufügen und lädt zur Mitarbeit an der Entwicklung ein.

likwid

Das ist ein Toolset zur Leistungsbewertung von Linux-Maschinen mit Intel-, AMD- und ARMv8-Prozessoren. Es wurde 2017 unter der Schirmherrschaft des Bundesministeriums für Bildung und Forschung Deutschlands entwickelt und in die Open Source übergeben.

Unter den Werkzeugen von likwid ist vor allem likwid-powermeter hervorzuheben, das Informationen aus den RAPL-Registern zur vom System verbrauchten Leistung anzeigt, sowie likwid-setFrequencies – es ermöglicht die Steuerung der Prozessorfrequenz. Eine vollständige Liste finden Sie im Repository..

Das Werkzeug wird von Ingenieuren genutzt, die in der HPC-Forschung tätig sind. Beispielsweise arbeitet an uarch-bench eine Gruppe von Fachleuten des Regionalen Rechenzentrums der Universität Erlangen-Nürnberg (RRZE) in Deutschland. Diese Gruppe ist auch aktiv an der Entwicklung dieses Toolsets beteiligt.

Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge
Foto – Clem Onojeghuo – Unsplash

perf-tools

Dieses Werkzeug zur Leistungsanalyse von Linux-Servern vor wurde von Brendan Gregg entwickelt. Er ist einer der Entwickler von DTrace – einem Framework zur dynamischen Nachverfolgung zur Fehlerbehebung von Anwendungen in Echtzeit.

Die Grundlage von perf-tools bilden die Kernel-Subsysteme perf_events und ftrace. Ihre Dienstprogramme ermöglichen die Analyse von Eingabe-/Ausgabe-Verzögerungen (iosnoop), das Nachverfolgen von Argumenten von Systemaufrufen (unccount, funcslower, funcgraph und functrace) und das Sammeln von Statistiken über "Treffern" im Dateicache (cachestat). Im letzteren Fall sieht der Befehl so aus:

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

Rund um das Werkzeug hat sich eine recht große Gemeinschaft gebildet (fast 6.000 Sterne auf GitHub.). Und es gibt Unternehmen, die aktiv perf-tools nutzen, zum Beispiel Netflix. Aber das Werkzeug wird weiterentwickelt und modifiziert (obwohl in letzter Zeit Updates eher selten erscheinen). Daher kann es in seiner Funktion zu Fehlern kommen — der Autor beschreibt, dass perf-tools gelegentlich einen Kernel-Panic auslöst.

llvm-mca

Ein Tool, das vorhersagt, wie viele Rechenressourcen der Maschinen-Code auf verschiedenen CPUs benötigen wird. Es schätzt Instructions Per Cycle (IPC) und die Belastung der Hardware, die von einer bestimmten Anwendung erzeugt wird.

llvm-mca wurde 2018 im Rahmen des Projekts LLVM, das sich mit der Entwicklung eines universellen Systems zur Analyse, Transformation und Optimierung von Programmen beschäftigt. Es ist bekannt, dass die Autoren von llvm-mca von einer Performance-Analyse-Lösung inspiriert wurden, IACA von Intel , und sie strebten an, eine Alternative dazu zu schaffen. Und laut den Nutzern ähnelt die Ausgabe des Tools (ihre Formatierung und Anzahl) tatsächlich IACA — ein Beispiel kann hier gefunden werden. Allerdings akzeptiert llvm-mca nur AT&T-Syntax, daher wird es wahrscheinlich notwendig sein, Konverter zu verwenden.

Worüber wir in unseren Blogs und sozialen Netzwerken schreiben:

Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge „Mathematische Modelle von der Wall Street“ oder wie man Kosten für die Cloud optimiert

Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge Was wir auf Habré schreiben:
Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge Risikominimierung: Wie man Datenverlust vermeidet

Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge Bücher für diejenigen, die bereits Systemadministration betreiben oder gerade erst damit beginnen
Benchmarks für Linux-Server: Sammlung öffentlicher Werkzeuge Eine Auswahl: fünf Bücher und ein Kurs über Netzwerke

Benchmarks für Linux-Server: Sammlung öffentlicher WerkzeugeWir bei 1cloud.ru bieten einen kostenlosen Dienst „DNS-Hosting“ an. Die Verwaltung von DNS-Einträgen ist bei uns in einem einzigen persönlichen Bereich möglich.

Quelle: habr.com

60GB SSD 8Gb DDR4