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]):
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
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).