NUMA -Architektur verstehen

NUMA -Architektur verstehen
Das Entwerfen von Computern ist immer ein Kompromiss. Die vier grundlegenden Komponenten eines Computers - die zentrale Verarbeitungseinheit (CPU) oder der Prozessor, der Speicher, der Speicher und die Karte zum Anschließen der Komponenten (E/A -Bussystem) - werden so clever wie möglich kombiniert, um eine Maschine zu erstellen, die erstellt ist sowohl kostengünstig als auch mächtig. Der Entwurfsprozess beinhaltet hauptsächlich eine Optimierung gegenüber Prozessoren (Co-Prozessoren, Multi-Core-Setup), Speichertyp und -betrag, Speicher (Festplatten, Dateisystem) sowie Preis.Die Idee hinter Co-Processors und Multi-Core-Architektur besteht darin, Vorgänge auf so viele einzelne Computereinheiten im kleinsten Raum zu verteilen und die parallele Ausführung von Computeranweisungen zu erwerben. In Bezug auf den Speicher handelt es sich um eine Frage der Menge oder Größe, die von der einzelnen Computereinheit angegangen werden kann und welcher Speichertyp mit der niedrigsten Latenz funktioniert. Der Speicher gehört zum externen Speicher, und seine Leistung hängt vom Festplattentyp, dem Dateisystem ab, das verwendet wird, Threading, Übertragungsprotokoll, Kommunikationsgewebe und die Anzahl der angehängten Speichergeräte.

Das Design von E/A -Bussen repräsentiert die Computerarterien und bestimmt erheblich, wie viel und wie schnell Daten zwischen den oben aufgeführten einzelnen Komponenten ausgetauscht werden können. Die obere Kategorie wird durch Komponenten geleitet, die im Bereich Hochleistungs -Computing (HPC) verwendet werden. Ab Mitte 2020 gehören die zeitgenössischen Vertreter von HPC Nvidia Tesla und DGX, Radeon Instinct und Intel Xeon Phi GPU-basierte Beschleunigerprodukte (siehe [1,2] für Produktvergleiche).

Numa verstehen

Ungleichmäßige Speicherzugriff (NUMA) beschreibt eine gemeinsame Speicherarchitektur, die in zeitgenössischen Multiprozessingsystemen verwendet wird. NUMA ist ein Computersystem, das aus mehreren einzelnen Knoten besteht, so dass der aggregierte Speicher zwischen allen Knoten gemeinsam genutzt wird: „Jedem CPU wird ein eigener lokaler Speicher zugewiesen und kann von einem anderen CPUs im System auf Speicher zugreifen.“ [12,7].

NUMA ist ein cleveres System, das zum Anschließen mehrerer zentraler Verarbeitungseinheiten (CPU) an eine beliebige Menge an Computerspeicher auf dem Computer verwendet wird. Die einzelnen NUMA -Knoten sind über ein skalierbares Netzwerk (E/A -Bus) verbunden, so dass eine CPU systematisch auf Speicher zugreifen kann, die anderen NUMA -Knoten zugeordnet sind.

Lokaler Speicher ist der Speicher, den die CPU in einem bestimmten NUMA -Knoten verwendet. Fremd- oder Remote -Speicher ist der Speicher, den eine CPU von einem anderen NUMA -Knoten entnimmt. Der Begriff NUMA -Verhältnis beschreibt das Verhältnis der Kosten für den Zugriff auf Fremdspeicher zu den Kosten für den Zugriff auf den lokalen Speicher. Je größer das Verhältnis ist, desto größer die Kosten und desto länger dauert es, um auf den Speicher zuzugreifen.

Es dauert jedoch länger als wenn diese CPU auf einen eigenen lokalen Speicher zugreift. Der lokale Speicherzugriff ist ein großer Vorteil, da er eine geringe Latenz mit einer hohen Bandbreite kombiniert. Im Gegensatz dazu weist der Zugriff auf Speicher zu jeder anderen CPU eine höhere Latenz und eine geringere Bandbreitenleistung auf.

Rückblick: Evolution von gemeinsamen Memory-Multiprozessoren

Frank Dennemann [8] erklärt, dass moderne Systemarchitekturen keinen wirklich einheitlichen Speicherzugriff (UMA) zulassen, obwohl diese Systeme speziell für diesen Zweck entwickelt wurden. Einfach gesagt, die Idee des parallelen Computer.

Wie von Frank Dennemann [8] erklärt, in den frühen 1970er Jahren „wurde die Notwendigkeit von Systemen, die mehrere gleichzeitige Benutzeroperationen und übermäßige Datenerzeugung bedienen können“, mit der Einführung von relationalen Datenbanksystemen zum Mainstream. „Trotz der beeindruckenden Rate der UniProzessor -Leistung waren Multiprozessorsysteme besser für diese Arbeitsbelastung ausgerüstet. Um ein kostengünstiges System bereitzustellen, wurde der Shared Memory Address-Raum im Mittelpunkt der Forschung. Früher wurden Systeme mit einem Querlattenschalter befürwort. Prozessoren in einem Bussystem können auf den gesamten Speicherplatz zugreifen, indem sie Anforderungen im Bus senden, eine sehr kostengünstige Möglichkeit, den verfügbaren Speicher so optimal wie möglich zu verwenden.”

Bus -basierte Computersysteme sind jedoch mit einem Engpass geliefert - die begrenzte Menge an Bandbreite, die zu Skalierbarkeitsproblemen führt. Je mehr CPUs dem System hinzugefügt werden, desto weniger Bandbreite pro Knoten verfügbar. Je mehr CPUs hinzugefügt werden, desto länger der Bus und je höher die Latenz.

Die meisten CPUs wurden in einer zweidimensionalen Ebene gebaut. CPUs mussten auch integrierte Speichercontroller hinzugefügt haben. Die einfache Lösung, vier Speicherbusse (oben, unten, links, rechts) zu jedem CPU -Kern zu haben, erlaubte die vollständige verfügbare Bandbreite, aber das geht nur so weit. CPUs stagnierte mit vier Kernen für eine beträchtliche Zeit. Das Hinzufügen von Spuren über und unten erlaubte direkte Busse zum diagonal entgegengesetzten CPUs, als Chips zu 3D wurden. Die nächste logische Schritt.

Heute enthält jeder Prozessor viele Kerne mit einem gemeinsam genutzten On-Chip-Cache und einem Off-Chip-Speicher und verfügt über variable Speicherzugriffskosten in verschiedenen Teilen des Speichers innerhalb eines Servers.

Die Verbesserung der Effizienz des Datenzugriffs ist eines der Hauptziele des zeitgenössischen CPU -Designs. Jeder CPU -Kern wurde mit einem kleinen Cache (32 kb) und einem größeren (256 kb) Level -2 -Cache ausgestattet. Die verschiedenen Kerne würden später einen Cache 3 von mehreren MB Level 3 teilen, von denen die Größe im Laufe der Zeit erheblich gewachsen ist.

Um Cache -Misses zu vermeiden - Anfordern von Daten, die nicht im Cache enthalten sind - wird viel Forschungszeit für die Suche nach der richtigen Anzahl von CPU -Caches, Caching -Strukturen und entsprechenden Algorithmen aufgewendet. Eine detailliertere Erklärung des Protokolls für das Caching Snoop [4] und die Cache -Kohärenz [3,5] sowie die Designideen hinter Numa finden Sie in [8].

Softwareunterstützung für NUMA

Es gibt zwei Software -Optimierungsmaßnahmen, die die Leistung eines Systems verbessern können, das die NUMA -Architektur unterstützt - Prozessoraffinität und Datenplatzierung. Wie in [19] erläutert, ermöglicht „Prozessoraffinität […] die Bindung und Entbindung eines Prozesses oder eines Thread als jede CPU."Der Begriff" Datenplatzierung "bezieht sich auf Software -Änderungen, bei denen Code und Daten im Speicher so nah wie möglich gehalten werden.

Die verschiedenen UNIX- und UNIX-bezogenen Betriebssysteme unterstützen die NUMA auf folgende Weise (die folgende Liste stammt aus [14]):

  • Silicon Graphics IRIX -Unterstützung für die CCNUMA -Architektur über 1240 CPU mit Origin -Serverserie.
  • Microsoft Windows 7 und Windows Server 2008 R2 fügte Unterstützung für die NUMA -Architektur über 64 logische Kerne hinzu.
  • Version 2.5 des Linux -Kernels enthielt bereits eine grundlegende NUMA -Unterstützung. Version 3.8 des Linux -Kernels brachte eine neue NUMA -Stiftung mit, die die Entwicklung effizienterer NUMA -Richtlinien in späteren Kernel -Releases ermöglichte [13]. Version 3.13 des Linux -Kernels brachte zahlreiche Richtlinien mit, die darauf abzielen, einen Prozess in der Nähe seines Gedächtnisses zusammen mit dem Umgang mit Fällen, z. Mit neuen Systemsteuerungseinstellungen können NUMA -Balancing aktiviert oder deaktiviert werden, sowie die Konfiguration verschiedener NUMA -Speicherausgleichsparameter [15].
  • Sowohl Oracle als auch OpenSolaris Model NUMA -Architektur mit der Einführung logischer Gruppen.
  • FreeBSD hat die erste NUMA -Affinität und Richtlinienkonfiguration in Version 11 hinzugefügt.0.

In dem Buch „Informatik und Technologie, Proceedings of the International Conference (CST2016)“ Ning CAI legt nahe, dass sich die Untersuchung der NUMA-Architektur hauptsächlich auf die High-End-Computing-Umgebung konzentriert und die vorgeschlagene NAMA-bewährte Radix-Partitionierung (NARP), die optimiert Die Leistung gemeinsamer Caches in NUMA -Knoten zur Beschleunigung von Business Intelligence -Anwendungen. Daher stellt NUMA einen Mittelweg zwischen Shared Memory (SMP) -Systemen mit wenigen Prozessoren dar [6].

Numa und Linux

Wie oben erwähnt, hat der Linux -Kernel NUMA seit Version 2 unterstützt.5. Sowohl Debian GNU/Linux als auch Ubuntu bieten NUMA -Unterstützung für die Prozessoptimierung mit den beiden Softwarepaketen Numactl [16] und Numad [17]. Mit Hilfe des Befehls numactl können Sie das Bestand der verfügbaren NUMA -Knoten in Ihrem System auflisten [18]:

# Numactl -Hardware
Verfügbar: 2 Knoten (0-1)
Knoten 0 CPUs: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
Knoten 0 Größe: 8157 MB
Knoten 0 kostenlos: 88 MB
Knoten 1 CPUs: 8 9 10 11 12 13 14 15 24 25 26 28 28 29 30 31
Knoten 1 Größe: 8191 MB
Knoten 1 kostenlos: 5176 MB
Knotenabstände:
Knoten 0 1
0: 10 20
1: 20 10

Numatop ist ein nützliches Tool, das von Intel zur Überwachung der Lokalität des Laufzeitgedächtnisses und zur Analyse von Prozessen in NUMA -Systemen entwickelt wurde [10,11]. Das Tool kann potenzielle NUMA-bezogene Leistungs Engpässe identifizieren und daher dazu beitragen, Speicher-/CPU-Zuordnungen neu auszubilden, um das Potenzial eines NUMA-Systems zu maximieren. Eine detailliertere Beschreibung finden Sie [9].

Nutzungsszenarien

Computer, die die NUMA -Technologie unterstützen, ermöglichen es allen CPUs, direkt auf den gesamten Speicher zuzugreifen - der CPU. Dies führt zu einer effizienteren Verwendung des 64-Bit-Adressierungsschemas, was zu einer schnelleren Datenbewegung, einer geringeren Replikation von Daten und einer einfacheren Programmierung führt.

NUMA-Systeme sind für serverseitige Anwendungen wie Data Mining und Entscheidungsunterstützungssysteme sehr attraktiv. Darüber hinaus wird das Schreiben von Anwendungen für Gaming- und Hochleistungssoftware mit dieser Architektur viel einfacher.

Abschluss

Zusammenfassend befasst sich die NUMA -Architektur mit der Skalierbarkeit, die eines ihrer Hauptvorteile darstellt. In einer NUMA -CPU hat ein Knoten eine höhere Bandbreite oder eine geringere Latenz, um auf den Speicher auf demselben Knoten zuzugreifen (e.G., Die lokale CPU fordert den Speicherzugriff gleichzeitig mit dem Remote -Zugriff an. Die Priorität liegt bei der lokalen CPU). Dies verbessert den Speicherdurchsatz drastisch, wenn die Daten in bestimmten Prozessen (und damit für Prozessoren) lokalisiert sind. Die Nachteile sind die höheren Kosten für den Umzug von Daten von einem Prozessor zum anderen. Solange dieser Fall nicht zu oft passiert, übertrifft ein NUMA -System die Systeme mit einer traditionelleren Architektur.

Links und Referenzen

  1. Vergleiche Nvidia Tesla vs. Radeon Instinct, https: // www.ITCentralStation.com/products/vergleiche/nvidia-tesla_vs_radeon-instinct
  2. Vergleichen Sie Nvidia dgx-1 vs. Radeon Instinct, https: // www.ITCentralStation.com/products/vergleiche/nvidia-dgx-1_vs_radeon-instinct
  3. Cache -Kohärenz, Wikipedia, https: // en.Wikipedia.org/wiki/cache_coherce
  4. Bus Snooping, Wikipedia, https: // en.Wikipedia.org/wiki/bus_snooping
  5. Cache -Kohärenzprotokolle in Multiprozessorsystemen, Geeks für Geeks, https: // www.Geeksforgeeks.org/Cache-Kohärenz-Protokolle in Multiprozessor-System/
  6. Informatik und Technologie - Proceedings der Internationalen Konferenz (CST2016), Ning CAI (Hrsg.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel p. Bovet und Marco Cesati: Verständnis der Numa -Architektur im Verständnis des Linux -Kernels, 3. Auflage, O'Reilly, https: // www.oreilly.com/bibliothek/view/Verständnis-the-linux/0596005652/
  8. Frank Dennemann: Numa Deep Dive Teil 1: Von Uma nach Numa, https: // Frankdenneman.NL/2016/07/07/Numa-Deep-Tive-Part-1-uma-numa/
  9. Colin Ian King: Numatop: Ein NUMA -Systemüberwachungsinstrument, http: // SmackRerelofopinion.Blogspot.com/2015/09/numatop-numa-System-Monitoring-Tool.html
  10. Numatop, https: // github.com/Intel/Numatop
  11. Paket Numatop für Debian GNU/Linux, https: // Pakete.Debian.org/buster/numatop
  12. Jonathan Kehayias: Verständnis ungleichmäßiger Speicherzugriff/Architekturen (NUMA), https: // www.sqlskills.com/blogs/Jonathan/Verständnis-nicht-uniformes Memory-Accessarchitekturen-numa/
  13. Linux Kernel News für Kernel 3.8, https: // Kernelnewbies.org/linux_3.8
  14. Ungleichmäßiger Speicherzugriff (NUMA), Wikipedia, https: // en.Wikipedia.org/wiki/uneinheitlich_memory_access
  15. Dokumentation der Linux -Speicherverwaltung, Numa, https: // www.Kernel.org/doc/html/v4.18/VM/Numa.html
  16. Paket numactl für Debian GNU/Linux, https: // Pakete.Debian.org/sid/admin/numactl
  17. Paket numad für Debian GNU/Linux, https: // pakete.Debian.org/buster/numad
  18. So finden Sie, ob die NUMA -Konfiguration aktiviert oder deaktiviert ist?, https: // www.thegeekdiary.com/centos-rhel-how-to-find-wenn-numa-konfiguration-is-fähige oder-dessible/
  19. Prozessoraffinität, Wikipedia, https: // en.Wikipedia.org/wiki/processor_affinity

Danke

Die Autoren möchten sich bei Gerold Rupprecht für seine Unterstützung bedanken, während er diesen Artikel vorbereitet hat.

Über die Autoren

Plaxedes Nehanda ist eine mehrkarrierte, selbstgetriebene, vielseitige Person, die viele Hüte trägt, darunter einen Veranstaltungsplaner, einen virtuellen Assistenten, ein Transkribier sowie ein begeisterter Forscher mit Sitz in Johannesburg, Südafrika.

Prinz k. Nehhanda ist ein Instrumentierungs- und Steuerungsingenieur (Metrologie) bei Paeblow Messung in Harare, Simbabwe,.

Frank Hofmann arbeitet unterwegs - vorzugsweise aus Berlin (Deutschland), Genf (Schweiz) und Kapstadt (Südafrika) - als Entwickler, Trainer und Autor für Magazine wie Linux -User und Linux Magazine. Er ist auch Co-Autor des Debian Package Management Book (http: // www.DPMB.org).