ThunderX2-Bewertung von Cavium: Der Traum vom Arm-Server wurde wahr (Teil 2)

Published on July 04, 2018

ThunderX2-Bewertung von Cavium: Der Traum vom Arm-Server wurde wahr (Teil 2)

Ursprünglicher Autor: Johan De Gelas
  • Übersetzung
Der erste Teil „ThunderX2-Bewertung von Cavium: Der Traum vom Arm-Server wurde wahr“ - hier

Testkonfiguration und Methodik


Für die Überprüfung von ThunderX2 wurden alle unsere Tests auf Ubuntu Server 17.10, Linux-Kernel 4.13 64-Bit durchgeführt. Wir verwenden normalerweise die LTS-Version, aber da Cavium mit dieser Ubuntu-Version geliefert wird, haben wir nicht riskiert, das Betriebssystem zu ändern. Die Ubuntu-Distribution enthält den GCC 7.2-Compiler.



Sie werden feststellen, dass das DRAM-Volumen in unseren Serverkonfigurationen variiert. Der Grund ist einfach: Das Intel-System verfügt über 6 Speicherkanäle und das Cavium ThunderX2 über 8 Speicherkanäle.





Typische BIOS-Einstellungen finden Sie unten. Es ist erwähnenswert, dass Hyperthreading und Intel-Virtualisierungstechnologie enthalten sind.

Sonstige Hinweise

Beide Server werden gemäß der europäischen Norm mit 230 V (maximal 16 A) versorgt. Die Lufttemperatur im Raum wird mit unseren Airwell CRAC-Instrumenten überwacht und auf 23 ° C gehalten.

Energieverbrauch


Es ist erwähnenswert, dass das Gigabyte "Sabre" -System 500 Watt verbrauchte, wenn es einfach unter Linux funktionierte (dh es war größtenteils inaktiv). Unter Last verbraucht das System jedoch etwa 800 W, was im Prinzip unseren Erwartungen entsprach, da wir zwei 180 W TDP-Chips im Inneren haben. Wie bei frühen Testsystemen üblich, können wir keine genauen Leistungsvergleiche durchführen.

Tatsächlich behauptet Cavium, dass aktuelle Systeme von HP, Gigabyte und anderen viel effizienter sein werden. Das verwendete Sabre-Testsystem hatte mehrere Probleme mit der Energieverwaltung: falsche Steuerung der Lüfter-Firmware, BMC-Fehler und zu viel Energieversorgung (1600 W).

Speichersubsystem: Bandbreite


Das Messen der vollen Kapazität des Systems mit dem Stream-Bandbreiten-Benchmark-Test von John McCalpin auf den neuesten Prozessoren wird schwieriger, wenn die Anzahl der Kern- und Speicherkanäle zunimmt. Wie aus den nachstehenden Ergebnissen hervorgeht, ist die Schätzung des Durchsatzes nicht einfach. Das Ergebnis hängt stark von den gewählten Einstellungen ab.



Theoretisch hat ThunderX2 33% mehr Bandbreite als Intel Xeon, da SoC im Vergleich zu den sechs Intel-Kanälen über acht Speicherkanäle verfügt. Diese hohen Durchsatzzahlen werden nur unter sehr spezifischen Bedingungen erreicht und erfordern eine gewisse Abstimmung, um die Verwendung von Remote-Speicher zu vermeiden. Insbesondere müssen wir sicherstellen, dass Threads nicht von einem Socket auf einen anderen übertragen werden.

Zunächst haben wir versucht, auf beiden Architekturen die besten Ergebnisse zu erzielen. Im Falle von Intel lieferte der ICC-Compiler mit einigen Optimierungen auf niedriger Ebene in Stream-Schleifen immer die besten Ergebnisse. Im Falle von Cavium folgten wir den Anweisungen von Cavium. Grob gesagt ist das resultierende Bild eine Vorstellung davon, wie viel Bandbreite diese Prozessoren auf Spitzen erreichen können. Um ehrlich zu sein, mit den idealen Einstellungen (AVX-512) können Sie 200 GB / s erreichen.

Es ist jedoch klar, dass das ThunderX2-System seinen Prozessorkernen 15 bis 28% mehr Bandbreite bieten kann. Das Ergebnis ist 235 GB / s oder etwa 120 GB / s pro Steckplatz. Dies ist wiederum etwa dreimal so viel wie das ursprüngliche ThunderX.

Speichersubsystem: Verzögerung


Obwohl sich Bandbreitenmessungen nur auf einen kleinen Teil des Servermarkts beziehen, hängt fast jede Anwendung stark von der Latenz des Speichersubsystems ab. Bei Versuchen, die Cache- und Speicherlatenz zu messen, haben wir LMBench verwendet. Die Daten, die wir am Ende sehen wollen, sind "Verzögerung unter zufälliger Belastung, Schritt = 16 Bytes". Beachten Sie, dass wir die L3-Latenz und die DRAM-Zeitverzögerung in Nanosekunden angeben, da wir keine genauen L3-Cache-Stunden haben.



Der Zugriff auf den ThunderX2 L2-Cache erfolgt mit einer sehr geringen Latenz, und bei Verwendung eines einzelnen Threads sieht der L3-Cache wie eine Konkurrenz zum integrierten L3-Cache von Intel aus. Als wir jedoch zu DRAM kamen, zeigte Intel eine deutlich geringere Latenz.

Speichersubsystem: TinyMemBench


Um die jeweiligen Architekturen besser zu verstehen, wurde der Open-Source-Test TinyMemBench verwendet. Der Quellcode wurde mit GCC 7.2 kompiliert und die Optimierungsstufe auf "-O3" gesetzt. Die Teststrategie ist im Benchmark-Handbuch gut beschrieben:

Die durchschnittliche Zeit wird für zufällige Speicherzugriffe in Puffern unterschiedlicher Größe gemessen. Je größer der Puffer ist, desto größer ist der relative Beitrag von TLB-Cache-Fehlern, L1 / L2- und DRAM-Aufrufen. Alle Zahlen geben die zusätzliche Zeit an, die zur L1-Cache-Latenzzeit (4 Zyklen) hinzugefügt werden muss.


Wir haben ein und zwei zufällige Lesevorgänge (ohne große Seiten) getestet, weil wir sehen wollten, wie das Speichersystem mit mehreren Leseanforderungen umgeht.



Einer der Hauptnachteile des ursprünglichen ThunderX war die Unfähigkeit, mehrere ausstehende Fehler zu unterstützen. Die Parallelität der Speicherebene ist ein wichtiges Merkmal für jeden modernen Hochleistungsprozessorkern: Mit ihrer Hilfe werden Cache-Ausfälle vermieden, die Back-End- „Hunger“ verursachen können. Daher ist der nicht blockierende Cache ein Schlüsselmerkmal für große Kernel.

Dank des nicht blockierenden Cache leidet ThunderX2 überhaupt nicht unter diesem Problem. Genau wie beim Skylake-Core in Xeon 8176 erhöht die zweite Lesung die Gesamtwartezeit nur um 15-30%, nicht um 100%. Laut TinyMemBench hat der Skylake-Core eine deutlich bessere Latenz. Der Ausgangspunkt von 512 KB ist leicht zu erklären: Der Skylake-Kern extrahiert immer noch aus seinem schnellen L2, und der ThunderX2-Kern muss auf den L3 zugreifen können. Die Zahlen 1 und 2 MB zeigen jedoch, dass Intel Prefetchers einen erheblichen Vorteil bieten, da die Wartezeit der Durchschnitt für den L2- und L3-Cache ist. Die Latenzwerte liegen im Bereich von 8 bis 16 MB, aber sobald wir L3 (64 MB) überschreiten, bietet Intel Skylake eine geringere Speicherlatenz.

Single-Thread-Leistung: SPEC CPU2006


Beginnen wir mit der Messung der tatsächlichen Rechenleistung mit dem SPEC CPU2006-Paket. Erfahrene Leser werden darauf hinweisen, dass die SPEC CPU2006 veraltet ist, als die SPEC CPU2017 erschien. Aufgrund der begrenzten Testzeit und der Tatsache, dass wir ThunderX nicht erneut testen konnten, entschieden wir uns, bei CPU2006 zu bleiben.

Angesichts der Tatsache, dass SPEC fast genauso ein Benchmark des Compilers ist wie die Hardware, halten wir es für angemessen, unsere Testphilosophie zu formulieren. Es ist notwendig, die tatsächlichen Indikatoren zu bewerten und die Testergebnisse nicht zu überhöhen. Daher ist es wichtig, soweit wie möglich „wie in der realen Welt“ Bedingungen mit den folgenden Einstellungen zu schaffen (konstruktive Kritik zu diesem Thema ist willkommen):

  • 64 bit gcc: der meistgenutzte Compiler unter Linux, ein guter Compiler, der nicht versucht, Tests zu "unterbrechen" (libquantum ...)
  • -Ofast: Compiler-Optimierung, die viele Entwickler verwenden können
  • -fno-strict-aliasing: Erforderlich, um einige Untertests zu kompilieren
  • Basislauf: Jeder Subtest wird gleich kompiliert

Zunächst müssen Sie die Leistung in Anwendungen messen, in denen aus irgendeinem Grund aufgrund der „unfreundlichen Multithread-Umgebung“ der Aufgabe eine Verzögerung auftritt. Zweitens muss man verstehen, wie gut die ThunderX LLC-Architektur mit einem Stream im Vergleich zur Skylake-Architektur von Intel funktioniert. Bitte beachten Sie, dass Sie in diesem speziellen Skylake-Modell die Frequenz auf 3,8 GHz übertakten können. Der Chip arbeitet in fast allen Situationen mit einer Frequenz von 2,8 GHz (28 Threads sind aktiv) und unterstützt 3,4 GHz mit 14 aktiven Threads.

Im Allgemeinen positioniert Cavium ThunderX2 CN9980 (1.795 US-Dollar) als "besser als 6148" (3.072 US-Dollar), einen Prozessor, der mit 2,6 GHz (20 Threads) arbeitet und ohne Probleme 3,3 GHz erreicht (bis zu 16 Threads sind aktiv) ). Auf der anderen Seite wird die Intel-SKU in vielen Situationen einen deutlichen 30-Prozent-Taktvorteil haben (3,3 GHz gegenüber 2,5 GHz).

Cavium entschied sich, das Frequenzdefizit durch die Anzahl der Kerne auszugleichen und bot 32 Kerne an - das sind 60% mehr als beim Xeon 6148 (20 Kerne). Es ist anzumerken, dass eine größere Anzahl von Kernen bei vielen Anwendungen (z. B. Amdahl) zu einer Verringerung des Rückstoßes führt. Wenn Cavium die Vorherrschaft von Intel mit ThunderX2 abschütteln möchte, sollte jeder Kern daher im realen Einsatz zumindest eine wettbewerbsfähige Leistung bieten. In diesem Fall sollte ThunderX2 mindestens 66% (2,5 vs. 3,8) der Skylake-Einzelstream-Leistung liefern.



Die Ergebnisse sind unscharf, da ThunderX2 mit dem ARMv8-Code (AArch64) arbeitet und Xeon den x86-64-Code verwendet.

Zeigerverfolgungstests - XML-Verarbeitung (auch große OoO-Puffer) und Pfadsuche, die normalerweise von einem großen L3-Cache abhängen, um die Auswirkung der Zugriffslatenz zu verringern, sind für ThunderX2 am schlimmsten. Es ist davon auszugehen, dass die höhere Latenz des DRAM-Systems die Leistung beeinträchtigt.

Workloads, bei denen der Einfluss der Zweigvorhersage höher ist (zumindest bei x86-64: ein höherer Prozentsatz fehlerhafter Zweigauswahl) - Gobmk, Sjeng, Hmmer - sind nicht die besten Lasten für ThunderX2.

Erwähnenswert ist auch, dass die Befehle perlbench, gobmk, hmmer und h264ref bekanntermaßen vom größeren L2-Cache (512 KB) von Skylake profitieren. Wir zeigen Ihnen nur ein paar Teile des Puzzles, aber zusammen können sie helfen, das Bild zusammenzusetzen.

Positiv zu vermerken ist, dass ThunderX2 bei gcc, das hauptsächlich im L1- und L2-Cache betrieben wird (und sich somit auf eine niedrige L2-Latenzzeit stützt), eine gute Leistung erbringt. Der Einfluss auf die Leistung des Verzweigungsprädiktors ist minimal. Im Allgemeinen ist der beste Test für TunderX2 mcf (Verteilung von Fahrzeugen im öffentlichen Verkehr), der, wie Sie wissen, den L1-Datencache fast vollständig verfehlt und sich auf den L2-Cache stützt. Dies ist die Stärke von ThunderX2. Mcf fordert auch Speicherbandbreite. Libquantum - Test, der den größten Bedarf an Speicherbandbreite hat. Die Tatsache, dass Skylake eine eher mittelmäßige Single-Threaded-Bandbreite bietet, ist wahrscheinlich auch der Grund, warum sich ThunderX2 auf libquantum und mcf so gut gezeigt hat.

SPEC CPU2006 Cont: Kernelbasierte Leistung mit SMT


Über die Single-Thread-Leistung hinaus sollte auch die Multi-Thread-Leistung innerhalb eines einzelnen Kerns berücksichtigt werden. Die Vulcan-Prozessorarchitektur wurde ursprünglich für die Verwendung von SMT4 entwickelt, um die Kerne zu laden und den Gesamtdurchsatz zu erhöhen. Darüber werden wir jetzt sprechen.



Erstens hat der ThunderX2-Kern viele signifikante Verbesserungen gegenüber dem ersten ThunderX-Kern erfahren. Selbst mit libquantum kann dieser Test auf dem älteren ThunderX-Kernel nach einigen Verbesserungen und der Optimierung des Compilers problemlos dreimal schneller ausgeführt werden. Nun, der neue ThunderX2 ist nicht weniger als 3,7-mal schneller als sein älterer Bruder. Dieser überlegene IPC eliminiert alle Vorteile des vorherigen ThunderX.

In Anbetracht der Auswirkungen von SMT sehen wir im Durchschnitt, dass 4-Wege-SMT die ThunderX2-Leistung um 32% verbessert. Dies reicht von 8% für die Videokodierung bis zu 74% für die Pfadfindung. Intel verzeichnet gegenüber seinem 2-Wege-SMT einen Anstieg von 18%, in den gleichen Szenarien von 4% auf 37%.

Insgesamt liegt die Leistungssteigerung des ThunderX2 bei 32%, was ziemlich gut ist. Aber dann stellt sich die offensichtliche Frage: Wie unterscheidet es sich von anderen SMT4-Architekturen? Zum Beispiel zeigt IBM POWER8, das auch SMT4 unterstützt, im selben Szenario eine Steigerung von 76%.

Dies ist jedoch kein Vergleich von ähnlich zu ähnlich, da der IBM-Chip ein viel breiteres Back-End hat: Er kann 10 Befehle verarbeiten, während der ThunderX2-Kern auf 6 Befehle pro Zyklus beschränkt ist. Der POWER8-Kern ist unersättlicher: Der Prozessor könnte mit einem 22-nm-Prozess nur 10 dieser „ultra-breiten“ Kerne in einem Leistungsbudget von 190 Watt unterbringen. Höchstwahrscheinlich erfordert eine weitere Leistungssteigerung durch die Verwendung von SMT4 noch größere Kerne und wirkt sich wiederum erheblich auf die Anzahl der in ThunderX2 verfügbaren Kerne aus. Dennoch ist es interessant, diesen Anstieg von 32% in der Zukunft zu betrachten.

Im folgenden (3) Teil:

  • Java-Leistung
  • Java-Leistung: riesige Seiten
  • Apache Spark 2.x Benchmarking
  • Das ergebnis

Vielen Dank für Ihren Aufenthalt bei uns. Mögen Sie unsere Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Freunden empfehlen. 30% Rabatt für Habrs Benutzer auf ein einzigartiges Analogon der Einstiegsserver, die wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von 20 Dollar oder wie man den Server teilt? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

Dell R730xd 2 mal günstiger? Nur wir haben 2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV ab 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr darüber, wie Sie ein Infrastrukturgebäude bauen. Klasse C mit Servern Dell R730xd E5-2650 v4 im Wert von 9000 Euro für einen Cent?