Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
AUF DIESER SEITE
 

AMD Konfiguration

Zu den KI-Servern, die als Teil des JVD abgedeckt werden, gehören 2 Supermicro AS-8125GS-TNMR2 Dual AMD EPYC 8U GPU und 2 Dell PowerEdge XE9680.

Dieser Abschnitt enthält einige Richtlinien für die Installation und Konfiguration der Schnittstellen und anderer relevanter Parameter, die auf den Labortests von KI JVD basieren. Lesen Sie bei Änderungen und für weitere Details immer die offizielle Dokumentation des Herstellers.

AMD MI300X Einstellen von BIOS-Parametern

Jeder Anbieter hat unterschiedliche BIOS-Einstellungen, die auf Unterschieden in den UI- und GPU-Zuordnungen und der internen Architektur der Server basieren.

SuperMicro AS-8125GS-TNMR2

Booten Sie den Server im Setup-Modus (das Booten von Supermicro Splash dauert einige Minuten, bis es angezeigt wird):

UEFI/BIOS-Bereichswert
Erweiterte -> NB-Konfiguration ACS aktivieren = deaktivieren
Erweitert -> NB-Konfiguration -> xGMI xGMI Verbindungsbreitenregelung = Manuell
xGMI Force Link Width Control = Kraft
xGMI Verbindungsbreite erzwingen = 2
xGMI Steuerung der maximalen Verbindungsbreite = Manuell
xGMI Link Maximale Geschwindigkeit = Auto
Erweiterte -> PCIe/PCI/PnP-Konfiguration Über 4G-Kodierung: Aktiviert
Unterstützung für Größenänderung der BAR: Aktiviert
SR-IOV-Unterstützung: Aktiviert
Arbeitsauslastung = nicht konfiguriert

DELL XE9680

Die folgenden BIOS-Einstellungen werden von Dell für den XE9680 KI/ML-Server empfohlen. Die BIOS-Einstellungen deaktivieren IOMMU und ACS auch auf dem Host.

UEFI/BIOS-Bereichswert
BIOS -> Prozessoreinstellungen Logischer Prozessor = Deaktivieren
Virtualisierungstechnologie = deaktivieren
SubNumaCluster = Deaktivieren
MADt-Core-Cluster = linear
1 BIOS -> Integrierte Geräte Global SRIOV = Deaktivieren 1
BIOS -> Systemprofileinstellung Server-Systemprofil = Leistung
Arbeitsauslastung = nicht konfiguriert
BIOS -> System Sicherheit AC-Wiederherstellungsverzögerung = Zufällig (dringend empfohlen)

1 Dell empfiehlt die "Aktivierung" von Global SR-IOV, aber bei den Dell DUTs in diesem Labor-Setup war diese Einstellung nicht mit dem Thor2 NIC-Portmodus 0 für die Speicher- und Frontend-Fabrics (2 x 200 GB vs. 1 x 400 Gb) kompatibel, was dazu führte, dass der Testobjekt beim Booten fehlerhaft war. Wenden Sie sich an Ihr Dell Account-Team, um Empfehlungen zu dieser Einstellung in Ihrem Setup zu erhalten."

Befolgen Sie die Konfigurationsschritte, die in der Dokumentation Netzwerkkonfiguration mit einem Knoten für AMD Instinct-Beschleuniger – GPU-Cluster-Netzwerk beschrieben sind. Beachten Sie, dass das in Schritt 6 verwendete Skript zum Deaktivieren von ACS auch vor Workloads ausgeführt werden muss, nachdem ein Server neu gestartet wurde.

Ethernet-Netzwerkadapter (NICs) für KI-Datencenter

KI/ML-Workloads haben an Komplexität und Umfang zugenommen. Das Netzwerk wird entscheidend für effiziente Job-Abschlusszeiten. Die Netzwerkadapter (Network Adapters, NIC) sind die Verbindungspunkte, die die GPUs mit den Datencenter-Fabrics verbinden. Daher sollten diese NICs in der Lage sein, große Datenmengen zu verarbeiten und eine Hochgeschwindigkeitskommunikation mit niedriger Latenz zwischen GPU-Servern zu unterstützen. Aus diesem Grund sollten die NICs mindestens einige der wichtigsten KI/ML-Funktionen unterstützen können, wie z. B.:

  • RDMA over Converged Ethernet (RoCE) und Überlastungskontrolle.
  • Fähigkeit, 400G-Daten bidirektional mit geringer Latenz zu verarbeiten.
  • Fortschrittliche Mechanismen zur Überlastungskontrolle, die sensibel und in der Lage sind, auf Netzwerküberlastungen zu reagieren und den Datenverkehrsfluss zu optimieren.
  • Unterstützung der GPU-Skalierbarkeit, die auch bei steigenden GPUs eine robuste Leistung gewährleistet.

Für Server-NICs haben wir zwei Optionen:

  • Broadcom Thor2: Die Broadcom Thor2-Netzwerkadapter wurden für KI/ML-Workloads und Job-Abschlusszeiten validiert.
  • AMD Pollara – AMD Pollara 400 Ethernet-Netzwerkadapter

Weitere Informationen zum AMD Pensando Pollara 400 (Ethernet-Adapter) finden Sie unter diesem Link.

Identifizieren von NICs- und GPUs-Zuordnungen

Neben der Einrichtung der Fabric und des GPU-Servers behandelt dieses JVD auch die Konfiguration und Einrichtung von Ethernet-Netzwerkadaptern (oder NIC) wie folgt. Der Ethernet-Netzwerkadapter Broadcom BCM957608 (Thor2) wurde in Phase 1 validiert. Und in Phase 2 werden die AMD Pollara 400 NIC-Karten validiert.

Alle 4 Server sind ausgestattet mit:

und eine der unten aufgeführten NICs

oder

Hinweis: Die meisten Setup-Befehle gelten sowohl für Thor2 als auch für AMD Pollara 400 NIC. Im Falle von Unterschieden in den Schritten werden diese jedoch an geeigneten Stellen im Dokument hervorgehoben.

Dell-Geräte:

AMD MI300x GPU-Server und NIC Firmware- und RCCL-Bibliotheken

Für die Zwecke der Broadcom Thor 2 NIC-Validierung sind im Folgenden die wichtigsten Betriebssystem- und Firmwareversionen aufgeführt, die auf den MI300x-GPU-Servern konfiguriert sind:

Broadcom Thor 2 Ethernet-Adapter

Nachfolgend finden Sie die Details des Betriebssystems (OS), der Firmware und der installierten AMD-Bibliotheken:

Betriebssystem-/Firmware-Version
Ubuntu Ubuntu 24.04.2 LTS
Broadcom Thor2 NIC Firmware-Version 231.2.63.0

Im Folgenden sind die Bibliotheken installiert, die für den RCCL-Test für den Thor2-Netzwerkadapter installiert sind:

RCCL-Testbibliotheken Versionsbefehl
Rocm/edel 6.4.0.60400-47~24.04 amd64 APT-Liste ROCM
Rccl 1 2.22.3.60400-47~24.04 amd64 apt list rccl
MPI (Offenes MPI) 5.0.8a1 mpirun –version

UCX

https://github.com/openucx/ucx.git

1.15.0 /opt/ucx/bin/ucx_info -v
Hinweis: Für AMD-Treiber und Host-Dienstprogramme wenden Sie sich bitte an Ihren regionalen AMD-Vertreter.

AMD Pensando Pollara 400 Ethernet-Adapter

Für die Zwecke der AMD Pollara 400 NIC-Validierung sind die folgenden Hauptbetriebssystem- und Firmwareversionen auf den MI300x GPU-Servern konfiguriert:

Betriebssystem-/Firmware-Version
Ubuntu Ubuntu 22.04.5 LTS
AMD Pollara NIC Firmware-Version 1.110.0-a-79

Ausgabe der Ubuntu Version 22.04 auf den MI300-Servern installiert.

Ausgabe der AMD Pollara 400 NIC-Karte Firmware-Version

Im Folgenden sind die Bibliotheken installiert, die für den RCCL-Test für den AMD Pollara 400 NIC-Adapter installiert sind:

RCCL-Testbibliotheken Versionsbefehl
Rocm/Jammy 6.3.3.60303-74~22.04 amd64 APT-Liste ROCM
Rccl 1 7961624  
MPI (Offenes MPI) 5.1.0a1 /opt/ompi/bin/mpirun –version

UCX

https://github.com/openucx/ucx.git

1.20.0 /opt/ucx/bin/ucx_info -v
rccl-tests REVISION 6704FC6 Git Branch https://github.com/ROCm/rccl-tests.git
ANP-Plugin2    
Hinweis: Für AMD-Treiber und Host-Dienstprogramme wenden Sie sich bitte an Ihren regionalen AMD-Vertreter.
1. Die RCCL-Bibliothek ist eine private Build-Version, die AMD bereitgestellt hat.
2. Die ANP-Plugin-Version ist ein privater Build, der von AMD bereitgestellt wird.

Weitere Informationen zur Installation dieser Software und abhängigen Bibliotheken finden Sie weiter unten im Abschnitt AMD Pollara-Firmware und abhängige Bibliotheken, da diese Schritte erst ausgeführt werden können, nachdem die NICs und GPUs wie in den folgenden Abschnitten beschrieben zugeordnet wurden.

In diesem Abschnitt werden einige der Optionen erläutert, um Informationen zu den NICs und GPUs zu finden und diese zu konfigurieren.

ROCm Communication Collectives Library (RCCL)

In AMD-Servern bietet das ROCm kollektive Kommunikationsprimitive für mehrere GPUs und mehrere Knoten, die für AMD-GPUs optimiert sind. Diese Verbundvorgänge implementieren Sende- und Empfangsvorgänge wie all-reduce, all-gather, reduce, broadcast, all-to-all usw. über mehrere GPUs in einem oder mehreren GPU-Servern.

Die Kommunikation zwischen GPUs auf einem einzelnen Server wird mithilfe von xGMI (Inter-Chip Global Memory Interconnect) realisiert, einem Teil der Infinity Fabric-Technologie von AMD. Die Infinity Fabric ist eine Verbindung mit hoher Bandbreite und niedriger Latenz für die verschiedenen Komponenten innerhalb eines Systems, einschließlich CPUs, GPUs, Speicher, NICs und andere Geräte. xGMI bietet eine Socket-to-Socket-Kommunikation, die eine direkte CPU-zu-CPU- oder GPU-zu-GPU-Kommunikation ermöglicht.

Die Kommunikation zwischen verschiedenen Servern wird von RDMA-fähigen NICs (z. B. RoCEv2 über Ethernet) verarbeitet und über die GPU-Backend-Fabric geroutet. Diese NICs können von jeder GPU jederzeit verwendet werden, da es keine fest codierte 1-zu-1-Zuordnung von GPU zu NIC gibt. Durch die Nutzung bevorzugter Kommunikationswege zwischen GPUs und NICs entsteht jedoch der Anschein einer 1:1-Entsprechung.

RCCL wählt immer den Pfad mit der besten Verbindung zwischen GPUs sowie zwischen GPUs und NICs, um Bandbreite und Latenz zu optimieren. Der optimierte knoteninterne Pfad wird vor der Weiterleitung zwischen den Knoten genommen.

Die rocm-smi CLI (Radeon Open Compute Platform System Management Interface) bietet Tools zur Konfiguration und Überwachung von AMD-GPUs. Es kann verwendet werden, um GPUs, Hardwaredetails sowie Topologieinformationen zu identifizieren, indem folgende Optionen verwendet werden:

--showproductname: Produktdetails anzeigen

--showtopo : Informationen zur Hardware-Topologie anzeigen

--showtopoaccess : zeigt die Link-Zugänglichkeit zwischen GPUs an

--showtopohops : zeigt die Anzahl der Hops zwischen GPUs an

--showtopotype : zeigt den Verbindungstyp zwischen GPUs an

--showtoponuma : Zeigt die NUMA-Knoten an

--shownodesbw: Zeigt die Bandbreite der NUMA-Knoten an

--showhw: Zeigt die Hardwaredetails an

Beispiele aus AMD Instinct MI300X OAM:

Der --showproductname zeigt die GPU-Serie, das Modell und den Anbieter zusammen mit weiteren Details. Die Beispielausgabe zeigt, dass GPUs der AMD Instinct™ MI300X-Plattform auf dem Server installiert sind.

Die --showhw Optionen zeigen Informationen über die GPUs im System an, einschließlich ID

Die Felder sind wie folgt definiert:

GPU Index der GPU auf dem System, beginnend bei 0.
KNOTEN NUMA-Knoten-ID (Non-Uniform Memory Access), die mit der GPU verknüpft ist. Hilft bei der Identifizierung der Erinnerungslokalität. Optimales GPU/NIC-Mapping hängt oft von der NUMA-Nähe ab
DID

Geräte-ID der GPU. Dies ist eine eindeutige Kennung für das jeweilige GPU-Modell.

Nützlich für die Überprüfung des genauen GPU-Modells. 0x74a1 entspricht beispielsweise einer GPU der MI300X-Serie.

GUID

Eindeutige GPU-Kennung. Dieser Wert ist für jede GPU spezifisch und kann sich auf ihr PCIe-Gerät beziehen.

Nützlich zur Unterscheidung von GPUs in einer Umgebung mit mehreren GPUs.

GFX VER

Die Version der GPU-Architektur (z. B. gfx942 ist Teil der RDNA2-Familie von AMD).

Bei AMD-GPUs ist das GFX-Präfix Teil der internen Namenskonvention von AMD für die GPU-Mikroarchitekturfamilien.

Hardwarespezifikationen für die GPU-Architektur — ROCm Documentation

GFX RAS Status der GPU-RAS-Funktionen (Zuverlässigkeit, Verfügbarkeit, Wartungsfreundlichkeit). Gibt die Fehlerbehandlung an.
SDMA RAS Status der SDMA-RAS-Funktionen (System Direct Memory Access).
UMC RAS Status der RAS-Funktionen des Unified Memory Controller (UMC).
VBIOS

VBIOS (Video BIOS) Version. Gibt die Firmwareversion an, die auf der GPU ausgeführt wird.

Identische Firmware-Version (113-M3000100-102) für alle GPUs zeigt eine einheitliche Konfiguration an.

BUS

PCIe-Busadresse der GPU. Hilft bei der Zuordnung der GPU zu ihrem physischen Steckplatz.

Beispielsweise ist 0000:05:00.0 die PCIe-Adresse. Es ermöglicht Ihnen, GPUs mit physischen Steckplätzen oder NUMA-Knoten in Beziehung zu setzen.

PARTITIONS-ID GPU-Partitions- oder Instanz-ID. Bei Multi-Instanz-GPUs (z. B. MI300X) würde dies Instanzen identifizieren. Alle Werte sind 0 und geben an, dass für diese GPUs keine Multi-Instanz-Partitionierung aktiviert ist.

Die --showbus Optionen zeigen PCI-Bus-bezogene Informationen an, einschließlich der Entsprechung zwischen GPU-IDs und PCI-Bus-IDs.

Die --showmetrics Option bietet umfassende Informationen über den GPU-Status und die Leistung, einschließlich Metriken wie Temperatur, Taktfrequenz, Leistung und PCIe-Bandbreite.

Die --showtopo Optionen zeigen, wie die GPUs in den Systemen über XGMI (Link Type) miteinander kommunizieren können, was einem Hop zwischen zwei beliebigen GPUs entspricht. Die Gewichtung von 15 zeigt an, dass diese direkte Kommunikation der bevorzugte Weg ist.

Der Verbindungstyp, die Anzahl der Hops und das Gewicht können auch mit den spezifischen Optionen --showtopoweight , --showtopotypeund –showtopoweighterhalten werden:

Die --shownodesbw zeigt die Bandbreite an, die intern für die interne Kommunikation zwischen GPUs verfügbar ist:

Weitere Optionen und Details finden Sie unter:

Weitere Informationen zu ROCm-SMI sowie zur neueren AMD-SMI CLI finden Sie unter: ROCm-Dokumentation, AMD SMI-Dokumentation, ROCm und AMD SMI

NICs und GPUs-Mappings

Als Nächstes führen Sie die Zuordnung der NIC zu GPUs durch, wie in den folgenden Schritten gezeigt. Diese werden sowohl für Thor2 als auch für AMD Pollara 400 NIC gleich sein.

Die Informationen aus anderen Befehlen können mit einigen der oben genannten Optionen kombiniert werden, um eine Korrelation zwischen GPU und NICs zu finden, indem Sie die folgenden Schritte ausführen:

  1. NUMA-Knoten und GPUs identifizieren

    Verwenden Sie die Ausgabe von rocm-smi --showtoponuma oder nur rocm-smi --showtopo , um Zuordnungen zwischen GPUs und NUMA-Knoten zu finden.

    Suchen Sie in der Ausgabe nach NUMA-Affinität für jede GPU. Eine Beschreibung der Bedeutung dieses Attributs finden Sie weiter unten in diesem Abschnitt.

    Notieren Sie, welche GPUs welchen NUMA-Knoten zugeordnet sind.

    Beispiel:

    GPU 0–3 → NUMA-Knoten 0

    GPU 4–7 → NUMA Knoten 1

  2. Identifizieren von NUMA-Knoten für NICs

    Navigieren Sie zum Verzeichnis, /sys/class/net/ und überprüfen Sie die NUMA-Knotenaffinität für jede Netzwerkschnittstelle (mit Ausnahme von Lo- oder Docker-Schnittstellen):

    Beachten Sie die NUMA-Knotenaffinität für jede NIC-Schnittstelle.

    BEISPIEL:

  3. Korrelation von GPUs zu NICs basierend auf NUMA-Affinität

Verwenden der NUMA-Knotenaffinität aus Schritt 1 (GPUs) und Schritt 2 (NICs), um jede GPU NICs innerhalb desselben NUMA-Knotens zuzuordnen:

BEISPIEL:

HINWEIS: Sie können auch das folgende Skript verwenden, um die obigen Schritte zu automatisieren:

BEISPIEL:

Sie werden feststellen, dass es keine 1:1-Verbindung zwischen GPU und NIC gibt. Stattdessen sind der GPU mehrere NIC-Schnittstellen zugeordnet. Dies liegt daran, dass sie zur gleichen NUMA-Knotenaffinität (Non-Uniform Memory Access) gehören.

Systeme, die eine NUMA-Architektur verwenden, enthalten Sammlungen von Hardwareressourcen, einschließlich CPUs, GPUs, Arbeitsspeicher und PCIe-Geräten (einschließlich NICs), die in einem so genannten "NUMA-Knoten" gruppiert sind. Diese Ressourcen werden gegenseitig als "lokal" betrachtet. Aus Sicht einer GPU sind Geräte im selben NUMA-Knoten am engsten mit dieser GPU verknüpft. Der NUMA-Knoten wird durch die NUMA-Affinität identifiziert.

Mehrere NICs und GPUs können mit demselben PCIe-Komplex oder Switch innerhalb eines NUMA-Knotens verbunden sein. Dadurch werden die NICs für alle GPUs zugänglich, die diesen Komplex teilen. Während jedoch jede GPU im selben Knoten auf alle NICs in einem NUMA-Knoten zugreifen kann, werden die NICs dynamisch für die Verwendung durch eine bestimmte GPU zugewiesen, basierend auf Verfügbarkeit, Datenverkehrstyp, Latenz usw.

Kommunikation zwischen GPUs auf demselben NUMA-Knoten (z. B. GPU1 ↔, GPU2):

GPUs auf demselben NUMA-Knoten (z. B. GPU1 und GPU2) kommunizieren direkt über die Verbindung mit hoher Bandbreite und niedriger Latenz, wie z. B. Infinity Fabric (in AMD-Systemen).

Diese Verbindungen vermeiden CPU und Hauptspeicher vollständig und bieten eine viel schnellere Kommunikation im Vergleich zur NUMA-übergreifenden Kommunikation. Da beide GPUs "lokal" für denselben Speichercontroller und dieselbe CPU sind, ist der Kommunikationspfad hochgradig optimiert.

Kommunikation zwischen GPUs auf verschiedenen NUMA-Knoten (z. B. GPU1 ↔, GPU4):

Die Kommunikation zwischen GPUs auf verschiedenen NUMA-Knoten (z. B. GPU1 auf NUMA 0 und GPU4 auf NUMA 1) muss zusätzliche Schichten der Systemarchitektur durchlaufen, was zu einer höheren Latenz führt. Der Pfad sieht in der Regel wie folgt aus:

  • GPU1 → CPU (NUMA 0): Daten werden von GPU1 an die CPU auf NUMA 0 gesendet.
  • Inter-NUMA Link: Die CPUs in NUMA 0 und NUMA 1 sind über einen Interconnect wie Infinity Fabric oder UPI (Ultra Path Interconnect) verbunden.
  • CPU (NUMA 1) → GPU4: Die Daten werden von der CPU auf NUMA 1 an GPU4 weitergeleitet.

Ändern von NIC-Attributen

In diesem Abschnitt erfahren Sie, wie Sie den Schnittstellennamen, die MTU, das DNS, die IP-Adressen und die Routing-Tabelleneinträge einer NIC hinzufügen oder ändern.

Bearbeiten und erneutes Anwenden der Netzwerkkonfigurationsdatei (Netplan)

Die Netzwerkkonfiguration wird in der netplan *.yaml-Datei beschrieben unter: /etc/netplan/.

Beachten Sie, dass der tatsächliche Dateiname variieren kann. Beispiele:

/etc/netplan/01-netcfg.yaml

/etc/netplan/00-installer-config.yaml

Das Ändern eines Schnittstellenattributs umfasst das Bearbeiten dieser Datei und das erneute Anwenden des Netzwerkplans wie unten gezeigt:

  1. Suchen Sie die Standardnamen der logischen Schnittstellen.

    Dazu können Sie die folgenden Schritte ausführen:

    Thor2 NIC Ausgang:

    Schnittstelle ens31np0:

    Wo

    • DE: Ethernet-Netzwerkschnittstelle.
    • S31: Gibt die physische Position der Netzwerkschnittstelle auf dem Systembus an. Steckplatz Nummer 31 auf dem Bus.
    • NP0:
    • n: Netzwerk (zeigt an, dass es sich um einen Netzwerkport handelt).
    • p0: Port 0 (zeigt an, dass es sich um den ersten Port dieser Netzwerkschnittstelle handelt).

    AMD Pollara 400 NIC-Ausgang

    Sie können das Skript gpunic.py verwenden, um Zuordnungen zwischen GPUs und NIC pro PCIe-Bus zu finden, um zu ermitteln, wie die NICS aus Gründen der Konsistenz umbenannt werden müssen.

    BEISPIEL:

    Um die Schnittstellen weiter zu identifizieren, können Sie den Befehl verwenden.

    Sie möchten sicherstellen, dass die mit der GPU-Backend-Fabric, der Speicher-Back-End-Fabric und der Front-End-Fabric verbundenen NICs 400GE-Schnittstellen, 200GE-Schnittstellen bzw. 100GE-Schnittstellen sind.

    NAME DER STANDARDSCHNITTSTELLE NEUER NAME Geschwindigkeit
    ENP6S0NP0 gpu0_eth 400GE
    ENP35S0NP0 gpu1_eth 400GE
    ENP67S0NP0 gpu2_eth 400GE
    ENP102S0NP0 gpu3_eth 400GE
    ENP134S0NP0 gpu4_eth 400GE
    ENP163S0NP0 gpu5_eth 400GE
    ENP195S0NP0 gpu6_eth 400GE
    ENP230S0NP0 gpu7_eth 400GE
    ENP47S0F0NP0 stor0_eth 200 GE
    ENP47S0F0NP1 stor1_eth 200 GE
    ENP208S0F0NP0 mgmt_eth 100 GE
  2. Suchen Sie die MAC-Adresse der Schnittstelle:

    Sie können den ip link show <device> Befehl verwenden.

    BEISPIEL:

    MAC-Adresse
    NAME DER STANDARDSCHNITTSTELLE NEUER NAME
    ENP6S0NP0 gpu0_eth 7c:c2:55:bd:75:d0
    ENP35S0NP0 gpu1_eth 7c:c2:55:bd:79:20
    ENP67S0NP0 gpu2_eth 7c:c2:55:bd:7d:f0
    ENP102S0NP0 gpu3_eth 7c:c2:55:bd:7e:20
    ENP134S0NP0 gpu4_eth 7c:c2:55:bd:75:10
    ENP163S0NP0 gpu5_eth 7c:c2:55:bd:7d:c0
    ENP195S0NP0 gpu6_eth 7c:c2:55:bd:84:90
    ENP230S0NP0 gpu7_eth 7c:c2:55:bd:83:10
    ENP47S0F0NP0 stor0_eth 5C:25:73:66:BC:5E
    ENP47S0F0NP1 stor1_eth 5c:25:73:66:bc:5f
    ENP208S0F0NP0 mgmt_eth 5c:25:73:66:c3:ee
  3. Ändern Sie die Netplan-Konfigurationsdatei mit dem neuen Namen und den neuen MAC-Adressen, die in den vorherigen Schritten festgelegt wurden.

    BEISPIEL:

    Achten Sie darauf, dass die korrekte Einrückung beibehalten wird und Bindestriche beim Bearbeiten der Datei angemessen sind (z. B. vor IP-Adressen, Routen usw.). Achten Sie bei den IP-Adressen darauf, die Subnetzmaske anzugeben.

    Im Folgenden finden Sie ein Beispiel für die Netplan-Konfigurationsdatei für einen der MI300X-Server im Labor:

  4. Speichern Sie die Datei und wenden Sie die Änderungen mit dem Befehl netplan apply an.

    jnpr@MI300X-01:/etc/netplan$ sudo netplan anwenden

    jnpr@MI300X-01:/etc/netplan$

  5. Stellen Sie sicher, dass die Änderungen korrekt übernommen wurden.

Überprüfen Sie, ob die neuen Schnittstellennamen korrekt sind:

Thor2 NIC Ausgang:

Beachten Sie, dass die gpu#_eth (#=0-7)-Schnittstellen Broadcom-BCM957608-Schnittstellen sind, während die mgmt_eth- und stor#_eth-Schnittstellen Mellanox MT2910 (ConnectX-7)-Schnittstellen sind. Dies wird im nächsten Abschnitt wichtig, in dem wir die CoS-Konfiguration der Schnittstellen behandeln werden.

AMD Pollara NIC-Ausgabe für denselben Befehl:

Beachten Sie, dass die gpu#_eth (#=0-7)-Schnittstellen AMD Pollara 400 NIC-Schnittstellen sind, während die mgmt_eth- und stor#_eth-Schnittstellen Mellanox MT2910 (ConnectX-7)-Schnittstellen sind. Dies wird im nächsten Abschnitt wichtig, in dem wir die CoS-Konfiguration der Schnittstellen behandeln werden. eth3 interface ist die supermicro IPMI-Schnittstelle.

Überprüfen Sie, ob die IP-Adressen richtig konfiguriert wurden:

ODER

Prüfen Sie, ob die Routen korrekt zur Routing-Tabelle hinzugefügt wurden:

ODER

Überprüfen Sie die Adressauflösung:

AMD Pollara Firmware und abhängige Bibliotheken

Hinweis: Für AMD-Treiber und Host-Dienstprogramme wenden Sie sich bitte an Ihren regionalen AMD-Vertreter.

Der Kürze halber beziehen sich die hier beschriebenen Schritte nur auf die Aktivierung des RCCL-Tests für AMD Pollara 400 NIC und daher müssen alle erforderlichen abhängigen Software und Bibliotheken installiert werden, damit der RCCL-Test ausgeführt werden kann. Die erforderlichen Schritte beziehen sich auf die Bibliotheken, die in der Tabelle AMD Server und NIC-Firmware und RCCL-unterstützende Bibliotheken aufgeführt sind.

  1. Stellen Sie sicher, dass die Ubuntu OS-Version 22.04 ist, wie im Abschnitt AMD Server and NIC Firmware and RCCL unterstützende Bibliotheken empfohlen
  2. Installieren Sie die RCCL-Bibliothek wie in den folgenden Schritten vorgeschlagen. Beachten Sie, dass RCCL und ANP private Bibliotheken sind, die von AMD bereitgestellt werden.
  3. Installieren Sie Unified Communication Framework (UCX). Das Unified Communication Framework (UCX) ist ein plattformübergreifendes Open-Source-Framework, das entwickelt wurde, um einen gemeinsamen Satz von Kommunikationsschnittstellen für verschiedene Netzwerkprogrammiermodelle und -schnittstellen bereitzustellen. Weitere Informationen finden Sie in der AMD-Dokumentation .
  4. Installieren Sie als Nächstes OpenMPI. Beachten Sie, dass OpenMPI ein GitHub-Link ist und daher möglicherweise GitHub-Anmeldeinformationen erforderlich sind. Das Open MPI-Projekt ist eine Open-Source-Implementierung für die Nachrichtenübergabeschnittstelle, die von einem Konsortium aus akademischen, Forschungs- und Industriepartnern entwickelt und gepflegt wird. Open MPI ist daher in der Lage, das Fachwissen, die Technologien und die Ressourcen aus der gesamten High Performance Computing-Community zu kombinieren, um die beste verfügbare MPI-Bibliothek zu erstellen.
  5. Installieren Sie Pollara-Treiber und -Firmware. Dies ist ein von AMD bereitgestelltes Firmware-Bundle. Diese Firmware installiert auch das Befehlszeilenprogramm 'nicctl', um mit den Pollara-NICs zu interagieren und Befehle zum Zurücksetzen von Karten oder zum Konfigurieren von Qos usw. auszuführen.

    Ausgabe der Firmware-Version:

  6. Führen Sie nach Abschluss der Firmware-Installation die Reset-Karte aus, um die Firmware-Version widerzuspiegeln.

    Pollara NIC-Ausgabe des Firmware-Updates

  7. Installieren Sie das ANP-Plugin. ANP ist eine Plugin-Bibliothek, die entwickelt wurde, um die kollektive RCCL-Kommunikationsbibliothek mit erweiterter Unterstützung für Netzwerktransport zu erweitern. Die ANP-Plugin-Bibliothek ist eine private AMD-Bibliothek.
  8. Zum Schluss erstellen Sie die RCCL-Tests.

Broadcom BCM957608 Thor2 DCQCN-Konfiguration für RDMA-Datenverkehr

Standardmäßige DCQN-ECN/PFC-Attribute in AMD-Servern.

Die Netzwerkschnittstellenadapter sind mit den folgenden Class-of-Service-Parametern (einschließlich DCQCN-ECN) für RoCE-Datenverkehr konfiguriert:

Für Thor2 NIC Adapter:

  • RoCEv2 (RDMA über IPv4) aktiviert
  • Überlastungskontrolle (ECN) und PFC-fähig
  • RoCE-Datenverkehr, der mit DSCP 26 auf PRIORITÄT 3 gekennzeichnet ist
  • RoCE CNP-Datenverkehr mit DSCP 48 und PRIORITÄT 7

Zuordnung von Broadcom- und logischen Schnittstellennamen zur Konfiguration von DCQN-ECN/PFC und TOS/DSCP für RDMA-Datenverkehrsattribute auf AMD-Servern

DCQCN, ECN, PFC und Datenverkehrsmarkierungen müssen auf den Schnittstellen konfiguriert werden, die mit dem GPU-Backend verbunden sind. Das gilt nur für die GPU#_eth Schnittstellen (#=0-7).

Im Abschnitt Ändern von NIC-Attributen dieses Dokuments haben wir festgestellt, dass es sich bei den gpu#_eth-Schnittstellen in unseren Servern um NICs von Broadcom BCM957608 (siehe unten) handelt.

Alle Schritte zur Konfiguration der Class of Service in diesem Abschnitt konzentrieren sich auf diese Broadcom-Schnittstellen.

Wir werden eine Kombination aus Linux-Systembefehlen und Broadcom-Tools verwenden, um DCQCN ECN/PFC-Betrieb und RoCE-Datenverkehrskennzeichnung zu aktivieren, abzustimmen und zu überwachen. Für einige dieser Befehle müssen wir den Namen der Broadcom-Schnittstelle finden, der jeder GPU-Schnittstelle zugeordnet ist. Führen Sie die folgenden Schritte aus, um diese Zuordnungen zu finden:

  1. Ermitteln Sie die PCI-Adressen jeder gpu#_eth Schnittstelle mithilfe der folgenden Logik:

    BEISPIEL:

  2. Suchen Sie die bnxt_re# (#=0-7)-Geräte, die jeder PCI-Adresse entsprechen, indem Sie die folgende Logik verwenden:

    BEISPIEL:

  3. ORDNEN Sie die Namen der GPU-Schnittstelle bnxt_re# oder mlx5_# Schnittstellen zu.

Kombinieren Sie die Ausgaben aus Schritt 1 und 2, um eine vollständige Zuordnung von GPU#_eth zu bnxt_re# oder mlx5_# zu erstellen. Sie können den Ausgaben entnehmen, dass z.B. gpu0_eth bnxt_re3 (0000:66:00.0) entspricht

Sie können die folgende Logik verwenden, um den Prozess zu vereinfachen:

BEISPIEL:

Konfiguration von DCQN-ECN/PFC und TOS/DSCP für RDMA Datenverkehrsattribute in AMD-Servern (Broadcom-Schnittstellen)

Einige der Parameter für DCQN-ECN/PFC und TOS/DSCP sind in der folgenden Tabelle aufgeführt:

Tabelle 25. DCQCN-Konfigurationsparameter des Servers

PARAMETERBESCHREIBUNG STANDARD
cc_mode

0 für deterministische Kennzeichnung (DCQCN-D)

1 für probabilistische Markierung (DCQCN-P)

1
cnp_ecn ECN aktiviert/deaktiviert 0x1 (aktiviert)
cnp_dscp DSCP-Wert für RoCE-Überlastungsbenachrichtigungspakete 48
cnp_prio Priorität für RoCE-Überlastungsbenachrichtigungspakete 7
cnp_ratio_th Definiert das Schwellenwertverhältnis für die Generierung von CNPs. Es bestimmt die Rate, mit der CNPs als Reaktion auf Überlastung gesendet werden, und hilft, die Aggressivität des Feedback-Mechanismus zu kontrollieren. 0x0
ecn_enable Aktivieren Sie die Überlastungskontrolle. 0x1 (aktiviert)
ecn_marking Ermöglicht das Tagging von Paketen als ECN-aktiviert. ECN = 01 0x1 (aktiviert)
default_roce_mode Legt den RoCE-Standardmodus für RDMA fest RoCE v2
default_roce_tos Legt den Standard-ToS-Wert für RDMA-Datenverkehr fest 104
roce_dscp DSCP-Wert für RoCE-Pakete. 26
roce_prio Priorität für RoCE-Pakete. 3
RTT Zeitraum (μs), in dem sich die Anzahl der CNP und der übertragenen Pakete ansammelt. Am Ende von rtt wird das Verhältnis zwischen CNPs und TxPkts berechnet und der CP aktualisiert. 40 μs.

BCM95741X Ethernet-Netzwerkadapter unterstützen drei Sende- und Empfangswarteschlangen für jeden Ethernet-Port: 0, 4 und 5.

BCM95750X Ethernet-Netzwerkadapter unterstützen acht Sende- und Empfangswarteschlangen für jeden Ethernet-Port: 0 bis 7.

Standardmäßig sind alle Warteschlangen für Weighted-Fair-Queueing (WFQ) konfiguriert, wobei Datenverkehr der Priorität 0 Warteschlange 4 zugeordnet wird.

Wenn der RoCE bnxt_re Treiber geladen wird, wird CoSQ 0 für verlustfreien Datenverkehr konfiguriert, und CoSQ 5 wird von WFQ auf strikte Priorität (SP) für die CNP-Verarbeitung geändert.

RoCE- und CNP-Datenverkehr kann mit unterschiedlichen DSCP-Werten gekennzeichnet werden oder stattdessen VLAN-Tags verwenden.

Standardmäßig ist das ToS-Feld auf 104 festgelegt, was bedeutet, dass DSCP auf 48 und die ECN-Bits auf 10 (ECN-aktiviert) eingestellt sind.

Diese Parameter können mit drei verschiedenen Methoden eingestellt werden:

  • DCQCN/RDMA-Markierungswerte direkt konfigurieren
  • Konfigurieren von DCQCN/RDMA-Markierungswerten mit Broadcom-Tools wie niccli, oder lldptool direkt
  • Konfigurieren von DCQCN/RDMA-Markierungswerten mithilfe the bnxt_setupcc.sh des Dienstprogramms, das hinter den Kulissen entweder niccli oder ( lldptool Standard) verwendet.

In den folgenden Abschnitten werden die Schritte beschrieben, mit denen Sie Änderungen mit diesen verschiedenen Optionen vornehmen können.

HINWEIS: Bitte stellen Sie sicher, dass alle Änderungen mit der Konfiguration der Switches innerhalb der Fabric übereinstimmen. Beispiel:

DCQN-ECN/PFC und TOS/DSCP für RDMA-Datenverkehrsattribute direkt konfigurieren

Sie können Änderungen am DCQCN und an der Datenverkehrsmarkierung vornehmen, indem Sie die Dateien, die die Werte der einzelnen Parameter enthalten, direkt bearbeiten. Diese Methode ist die einfachste und erfordert keine Installation zusätzlicher Tools. Es ist jedoch keine Option für PFC-bezogene Parameter und wird auch nicht auf allen Arten von Netzwerkadaptern unterstützt.

Um diese Änderungen für eine bestimmte Schnittstelle abzuschließen, müssen Sie sich im richtigen Schnittstellenverzeichnis befinden, indem Sie die folgenden Schritte ausführen:

  1. Erstellen von Schnittstellenverzeichnissen für QoS-bezogene Werte

    Wir haben die Zuordnungen zwischen den gpu#_eth-Schnittstellen und den entsprechenden Broadcom-Schnittstellennamen bestimmt

    GPU-zu-NIC-Zuordnung:

    gpu0_eth = > 0000:06:00.0 = > bnxt_re0

    gpu1_eth = > 0000:23:00.0 => bnxt_re1

    gpu2_eth = > 0000:43:00.0 => bnxt_re2

    gpu3_eth = > 0000:66:00.0 => bnxt_re3

    gpu4_eth = > 0000:86:00.0 => bnxt_re4

    gpu5_eth = > 0000:a3:00.0 => bnxt_re5

    gpu6_eth = > 0000:c3:00.0 => bnxt_re6

    gpu7_eth = > 0000:e6:00.0 => bnxt_re7

    Wir werden die Broadcom-Schnittstellennamen verwenden, um die Verzeichnisse (rdma_cm und bnxt_re) zu erstellen, in denen sich die DCQCN-Attribute sowie andere Parameter und Statistiken für jede Schnittstelle befinden.

    Die schnittstellenspezifischen Verzeichnisse sind erst vorhanden, wenn sie mit den folgenden Befehlen erstellt wurden:

    Beachten Sie, dass diese beiden Verzeichnisse vorhanden sein müssen.

    Wenn z.B. das rdma_cm Verzeichnis fehlt, versuchen Sie Folgendes:

    BEISPIEL:

    Wiederholen Sie diese Schritte für alle GPU-Schnittstellen.

    HINWEIS: Sie müssen ein Root-Benutzer sein, um diese Änderungen vornehmen zu können.

    Die neuen Verzeichnisse enthalten Werte für ECN, ROCE-Datenverkehr und andere Funktionen:

    Eine Beschreibung einiger dieser Parameter sowie ihren aktuellen Wert cat to apply finden Sie im /sys/kernel/config/bnxt_re/bnxt_re0/ports/1/cc# Verzeichnis.

    BEISPIEL:

  2. RoCEv2-Betrieb aktivieren.

    Obwohl RoCEv2 der Standardmodus sein sollte, wird hier der Befehl zum Aktivieren von RoCEv2 angezeigt.

    HINWEIS: Diese Änderung wird im Verzeichnis rdma_cm vorgenommen
    HINWEIS: Geben Sie den Wert genau wie abgebildet ein, einschließlich des Leerzeichens: "RoCE v2" (Groß-/Kleinschreibung beachten).

    Wenden Sie nach dem Festlegen des Parameters die neuen Werte wie folgt an:

    Überprüfen Sie die Änderungen:

  3. Aktivieren Sie ECN-Reaktions- und Benachrichtigungsfunktionen.

    Obwohl ECN standardmäßig aktiviert sein sollte, wird hier der Befehl zum Aktivieren von ECN angezeigt.
HINWEIS: Diese Änderung wird im Verzeichnis bnxt_re0 vorgenommen.
Bei Bedarf können Sie ECN deaktivieren, indem Sie stattdessen eingeben .

Wenn ECN auf den Broadcom-Schnittstellen aktiviert ist, antworten sie auf CNP-Pakete (RP) und generieren CNP-Pakete, wenn ECN-markierte (NP) empfangen werden.

Um es zu deaktivieren, geben Sie stattdessen ein echo -n 0x0 > cnp_ecn .

Wenden Sie nach dem Festlegen des Parameters die neuen Werte an:

Überprüfen Sie die Änderungen:

Sie können auch die Markierung von CNP- und ROCE-Paketen als ECN-fähig aktivieren (d. h., diese Pakete können bei Überlastung im gesamten Netzwerk markiert werden).

Zusammenfassend lassen sich diese Attribute zusammenfassen:

ecn_enable Aktiviert/deaktiviert die RP-Seite (Reaktionspunkt) von ECN. Es ermöglicht dem Gerät, auf CNP-Pakete zu reagieren. Standardwert = 1 (aktivieren)
cnp_ecn Konfiguriert die Markierung von CNP-Paketen als ECN-fähig. Entweder ein Wert von 01 oder 10 für das ECT-Feld.
ecn_marking Konfiguriert die Kennzeichnung von ROCE-Paketen als ECN-fähig. Entweder ein Wert von 01 oder 10 für das ECT-Feld.
  1. Konfigurieren Sie die DSCP- und PRIO-Werte für CNP- und RoCEv2-Pakete.
    HINWEIS: Die manuelle Konfiguration dieser Werte, wie unten gezeigt, ist nicht für alle Arten von Broadcom-Schnittstellenkarten möglich. Für BCM95741X Geräte können Sie diese Methode beispielsweise verwenden, um die ECN- und RoCE-Prioritätswerte zu konfigurieren, aber auf den BCM95750X/BCM957608 Geräten können Sie konfigurieren .

    Siehe Parameter für die Überlastungskontrolle des Ethernet-Netzwerkadapters von Broadcom

    HINWEIS: Diese Änderungen werden im Verzeichnis bnxt_re0 vorgenommen.
    HINWEIS: Der folgende Fehler weist darauf hin, dass das direkte Ändern des Werts dieses Parameters nicht unterstützt wird. Im Fall von BCM957608 roce_prio müssen cnp_prio mit bnxt_setupcc.sh (später beschrieben) konfiguriert werden.

    Wenden Sie nach dem Festlegen des Parameters die neuen Werte an:

    Überprüfen Sie die Änderungen:

  2. Konfigurieren Sie den DCQCN-Algorithmus (im Verzeichnis bnxt_re).

    Der standardmäßige DCQCN Congestion Control (cc-mode)-Algorithmus im Broadcom Ethernet-Netzwerkadapter ist DCQCN-P. Der Modus kann mit diesen Befehlen geändert werden:

    HINWEIS: Diese Änderung wird im Verzeichnis bnxt_re0 vorgenommen.

    So verwenden Sie DCQCN-P, konfigurieren:

    So verwenden Sie DCQCN-D konfigurieren:

  3. Überprüfen Sie alle konfigurierten Attribute.

Der folgende Befehl zeigt alle Schnittstellenparameter an:

Weitere Informationen zum DCQCN-Algorithmus im Broadcom Ethernet-Netzwerkadapter finden Sie in den folgenden Dokumenten: Ändern der Einstellungen für den Überlastungssteuerungsmodus und RoCE Überlastungskontrolle

BEISPIEL:

Wir haben einige ECN/CNP-bezogene Parameter hervorgehoben:

Konfigurieren von DCQN-ECN/PFC und TOS/DSCP für RDMA-Datenverkehrsattribute mithilfe von niccli

Sie können Änderungen am DCQCN und an der Datenverkehrskennzeichnung mit dem NICCL-Konfigurationsdienstprogramm vornehmen.

niccli ist ein Verwaltungstool für Broadcom Ethernet-Netzwerkadapter, das detaillierte Informationen wie Typ, Status, Seriennummer und Firmware-Version bereitstellt. Außerdem ermöglicht er die Konfiguration von Schnittstellenattributen wie DCQCN-ECN, PFC und TOS/DSCP zur Optimierung des RDMA-Datenverkehrs.

HINWEIS: Die niccli-Tools müssen in Ihrem System installiert sein.

Installieren des NICCLI Konfigurationsprogramms

Sie können eine Zusammenfassung der Schnittstellenadapter und Ethernet-Ports erhalten, die mit niccli auf dem Server verwaltet werden können, wie niccli listdev, or list-eth im folgenden Beispiel gezeigt.

Sie können sie entweder im einzeiligen Modus, im interaktiven Modus oder im Batch-Modus verwendenniccli. Der niccli -h help enthält eine allgemeine Beschreibung dieser Modi. In diesem Abschnitt zeigen wir einige Beispiele für die Verwendung der einzeiligen und interaktiven Modi für die DCQCN-ECN-, PFC- und TOS/DSCP-Konfiguration.

Wenn Sie ohne Optionen eingeben niccli , können Sie im interaktiven Modus arbeiten, in dem Sie einen Adapter/eine Schnittstelle (nach Index) und dann die richtige <command> (z. B. show, get_qos, set_map) auswählen, um Informationen zu erhalten oder Änderungen an der ausgewählten Schnittstelle vorzunehmen.

Sie können den Schnittstellenindex für jede Schnittstelle mit der Methode identifizieren, die im Abschnitt Zuordnen des Broadcom-Schnittstellennamens mit dem logischen Schnittstellennamen beschrieben wird. Dadurch erhalten Sie die Zuordnungen zwischen Schnittstellen und PCIe-Adressen, die Sie dann mit der folgenden Ausgabe korrelieren niccli können.

Geben Sie nach der Identifizierung den Schnittstellenindex (erste Spalte in der Ausgabe) ein, wie im folgenden Beispiel gezeigt.

BEISPIEL:

Durch Eingabe können Sie dieselben Befehle ausgeben, jedoch einschließlich der Zielschnittstelle und des Befehls in einer Zeile. Mit dem niccli -list Befehl kann der Schnittstellenindex ermittelt werden.

BEISPIEL

Der sudo niccli help bietet eine umfangreiche Liste von Befehlen und Optionen, die sowohl für den interaktiven als auch für den einzeiligen Modus verfügbar sind.

HINWEIS: Wir verwenden den einzeiligen Modus für alle folgenden Beispiele, um Informationen zu erhalten und Konfigurationsänderungen vorzunehmen.

Die folgenden Beispiele zeigen Ihnen, wie niccli Sie Informationen zu einer bestimmten Schnittstelle erhalten.

  1. Überprüfen Sie den Schnittstellenstatus.

    Das niccli -i <interface> show enthält Details zur Schnittstelle wie Typ, MAC-Adresse, Firmware, Seriennummer, Gerätezustand, Temperatur usw.

    BEISPIEL:

  2. Überprüfen Sie die QoS-Einstellungen
Die Befehle zeigen Zuordnungen zwischen DSCP- und Prioritätswerten sowie zwischen Prioritätswerten, Datenverkehrsklassen (TC) und den Ausgabewarteschlangen.

Die Ausgaben im Beispiel zeigen die Standardwerte für:

  • Status der Warteschlangen. Nur die Warteschlangen 0, 1 und 2 sind aktiviert.
  • Priorität für DSCP-Zuordnungen: Priorität 7 = > DSCP 48 und Priorität 3 = > DSCP 26.
  • Priorität für TC (Datenverkehrsklasse) und Warteschlangenzuordnungen: Priorität 7 = > TC2 (Warteschlange 0) = > DSCP 48 und Priorität 3 = > TC1 (Warteschlange 5) = > DSCP 26.
HINWEIS: Die Ausgabe kann verwirrend sein; Die angezeigte Warteschlangen-ID ist eine interne CoS-Warteschlangennummer. Das bedeutet wirklich, dass Warteschlangen der Datenverkehrsklassen 0, 1 und 2 aktiviert sind, während alle anderen Datenverkehrsklassen deaktiviert sind.

Der sudo niccli -i <interface-index> get_qos Befehl bietet eine Zusammenfassung der QoS-Konfiguration auf der Schnittstelle.

BEISPIEL:

an
IEEE 802.1Qaz ETS-Konfiguration TLV: zeigt die ETS-Konfiguration (Enhanced Transmission Selection)
PRIO_MAP: 0:0 1:0 2:0 3:1 4:0 5:0 6:0 7:2

Ordnet Prioritäten Datenverkehrsklassen (TC) zu

Priorität 0, 1, 2, 4, 5, 6 → TC 0

Priorität 3 → TC 1

Priorität 7 → TC 2

TC-Bandbreite: 50% 50% 0%

Weist Datenverkehrsklassen Bandbreitenprozentsätze zu.

TC 0: 50 % der Gesamtbandbreite.

TC 1: 50 %.

TC 2: 0 %.

TSA_MAP: 0:ETS 1:ETS 2:STRICT

Zusammen mit TC Bandbreite weist TSA_MAP Ressourcen zu und definiert die Servicepriorität für jedes TC. Äquivalent zu Schedulern & Scheduler-Map in Junos.

Gibt den Transmission Selection Algorithm (TSA) an, der für jedes TC verwendet wird:

TC 0 und TC 1 verwenden ETS (Enhanced Transmission Selection) und teilen sich die verfügbare Bandbreite 50/50

TC 2 verwendet eine strikte Priorität, was bedeutet, dass der Datenverkehr von TC 2 immer zuerst gesendet wird

IEEE 802.1Qaz PFC TLV: Definiert die Klassifizierung des Datenverkehrs im APP TLV-Format (Type-Length-Value).
PFC-aktiviert: 3

Gibt an, dass PFC bei Priorität 3 aktiviert ist.

Für andere Prioritäten ist PFC nicht aktiviert.

PFC stellt sicher, dass der Datenverkehr mit dieser Priorität anhalten kann, anstatt bei Überlastung abgebrochen zu werden.

IEEE 802.1Qaz APP TLV

APP#0:

Priorität: 7

Auswahl: 5

DSCP: 48

APP#1:

Priorität: 3

Auswahl: 5

DSCP: 26

APP#2:

Priorität: 3

Auswahl: 3

UDP oder DCCP: 4791

Ordnet Datenverkehr Datenverkehrsklassen zu. Entspricht Mehrfeld-Klassifikatoren in Junos.

APP#0: Datenverkehr, der mit DSCP = 48 gekennzeichnet ist, wird der Priorität 7 zugeordnet

APP#1: Datenverkehr, der mit DSCP = 48 gekennzeichnet ist, wird der Priorität 3 zugeordnet

APP#2: UDP- oder DCCP-Datenverkehr mit Port = 4791 (RoCEv2) wird der Priorität 3 zugeordnet

TC-Ratengrenze: 100% 100% 100% 0% 0% 0% 0% 0% 0% 0% 0%

TC 0, TC 1 und TC 2 können bis zu 100 % der ihnen zugewiesenen Bandbreite nutzen.

TC 3 bis TC 7 sind auf 0 % eingestellt, was bedeutet, dass sie derzeit nicht für die Übertragung von Datenverkehr konfiguriert sind.

Ändern Sie bei Bedarf die Priorität auf Datenverkehrsklassenzuordnungen oder die Anwendungen auf Datenverkehrsklassenzuordnungen.

Es wird empfohlen, die Standardeinstellungen beizubehalten und sicherzustellen, dass sie mit der Class-of-Service-Konfiguration auf den Leafknoten in der GPU-Backend-Fabric übereinstimmen.

Wenn die Priorität von Datenverkehrsklassenzuordnungen oder die von Anwendungen zu Datenverkehrsklassenzuordnungen geändert werden müssen, können die folgenden Befehle verwendet werden:

Priorität für Datenverkehrsklassenzuordnungen

BEISPIEL:

Zuordnungen von Anwendungen zu Datenverkehrsklassen

BEISPIEL:

Ändern Sie bei Bedarf die ETS-Konfigurationsattribute.

Es wird empfohlen, die Standardeinstellungen beizubehalten und sicherzustellen, dass sie mit der Class-of-Service-Konfiguration auf den Leafknoten in der GPU-Backend-Fabric übereinstimmen.

BEISPIEL:

Konfigurieren Sie bei Bedarf PFC

BEISPIEL:

Der folgende Befehl versucht, die PFC für die Prioritäten 5 und 6 zu aktivieren, und zeigt, dass nur eine Warteschlange (eine Priorität) als verlustfreie Warteschlange (PFC-aktiviert) konfiguriert werden kann.

Konfigurieren von DCQCN- und RoCE-Datenverkehrsmarkierungswerten mithilfe von bnxt_setupcc.sh

Verwenden des bnxt_setupcc.sh Dienstprogramms, das den Prozess vereinfachen kann.

Das bnxt_setupcc.sh Dienstprogramm vereinfacht die Aktivierung oder Deaktivierung von ECN und PFC und das Ändern der Werte von DSCP und PRIO für ROCE- und CNP-Pakete für eine bestimmte Schnittstelle.

Unter der Haube wird verwendet niccli (Standard) oder lldptool die als Teil des Befehls ausgewählt werden kann.

Sie müssen eingeben bnxt_setupcc.sh , gefolgt von den ausgewählten Optionen, wie im Hilfemenü beschrieben:

BEISPIEL:

Die standardmäßige DSCP-Kennzeichnung für CNP-Pakete für die Schnittstelle gpu0 (bnxt_re0) ist 0, wie in der folgenden Ausgabe gezeigt:

bnxt_setupcc.sh kann verwendet werden, um ihn wie folgt auf den von der Fabric erwarteten Wert (48) zu ändern:

Wobei:

  • -u 3: Verwendet das Dienstprogramm Broadcom niccli
  • -p 48: Legt den DSCP-Wert für CNP-Pakete auf 48 (0x30) fest.
  • -c: Konfiguriert die Priorität für CNP-Pakete auf 6
  • -s: Definiert den DSCP-Wert für reguläre RoCE-Pakete auf 26 (0x1a)
  • -r: Legt die Priorität für reguläre RoCE-Pakete auf 5 fest
  • -m 3: Konfiguriert sowohl PFC als auch Überlastungskontrolle (ECN).
HINWEIS: Gerät (-i) ist erforderlich, damit das Skript abgeschlossen werden kann. Außerdem können Sie nicht nur einen der DSCP/PRIO-Werte konfigurieren. Sie müssen den CNP-DSCP-Wert (-p), den CNP-PRI-Wert (-c), den RoCE-DSCP (-s) und den RoCE-PRIO (-r) konfigurieren, damit der Befehl funktioniert.

Überprüfen Sie die Ergebnisse mit:

HINWEIS: Sie müssen sicherstellen, dass nicht nur bnxt_setupcc.sh installiert und ausführbar ist, sondern auch, dass mindestens eines der Tools ( niccli oder lldptool) installiert ist.

Das folgende Beispiel zeigt, dass bnxt_setupcc.sh und niccli installiert sind, aber lldptool nicht. Außerdem werden Beispiele für die Installation und Verwendung von lldptool.

Die lldptool wird verwendet, um die LLDP-Einstellungen (Link Layer Discovery Protocol) zu überprüfen oder zu ändern. Um LLDP zu aktivieren, müssen Sie installieren lldpad, , das ebenfalls automatisch installiert wird lldptool .

So installieren lldpad Sie und lldptool folgen diesen Schritten:

  1. Installieren Sie die erforderlichen Abhängigkeiten.

    Stellen Sie vor der Installation von lldpad sicher, dass die erforderlichen Bibliotheken installiert sind, indem Sie den folgenden Befehl ausführen:

    • libconfig9 – Eine Bibliothek zur Verarbeitung von Konfigurationsdateien.
    • libnl-3-200 – Eine Bibliothek für die Interaktion mit der Linux Netlink-Schnittstelle.
  1. Installieren Sie lldpad.

    Installieren Sie lldpad, indem Sie den folgenden Befehl ausführen:

    Dieses Paket ermöglicht LLDP auf dem System, sodass Informationen zur Netzwerktopologie mit anderen Geräten ausgetauscht werden können.

  2. Aktivieren Sie lldpad.

    Aktivieren Sie lldp mit systemctl:

    Dadurch wird ein Systemdienst erstellt, der sicherstellt, dass lldpad nach einem Neustart immer ausgeführt wird.

  3. Starten Sie den lldpad-Dienst

    LLDP mit systemctl aktivieren:

    Dadurch wird lldpad sofort aktiviert, sodass es LLDP-Pakete verarbeiten kann.

    HINWEIS:
    Um lldpad manuell neu zu starten, verwenden Sie:
    Um lldpad für den Start beim Booten zu deaktivieren, verwenden Sie: sudo systemctl disable lldpad
  4. Überprüfen Sie die Installation

Überprüfen Sie den Servicestatus mit systemctl

Dadurch wird sichergestellt, dass das Tool installiert und einsatzbereit ist. Wenn alles ordnungsgemäß funktioniert, sollten Sie den Status "aktiv (läuft)" sehen.

Sie können lldptool verwenden, um LLDP auf einer Schnittstelle zu aktivieren oder zu deaktivieren und den LLDP-Status und die auf dieser Schnittstelle erkannten Nachbarn zu überprüfen. Das lldptool -h zeigt Ihnen alle verschiedenen Optionen:

Weitere Informationen finden Sie im Abschnitt Manuelles Installieren und Konfigurieren von Software im Benutzerhandbuch des Broadcom Ethernet-Netzwerkadapters oder unter Installieren des NICCLI Configuration Utility .

Überwachungsschnittstelle und ECN/PFC-Betrieb:

Sobald Sie den Broadcom-Namen für eine bestimmte GPU haben, wie am Anfang dieses Abschnitts beschrieben, können Sie die Verzeichnisse suchen, in denen sich der Betriebsstatus der Schnittstelle sowie RoCE-Datenverkehr und Statistiken zur Überlastungskontrolle befinden.

  1. Navigieren Sie in das entsprechende Verzeichnis

/sys/class/infiniband/<Broadcom-Schnittstellenname>

BEISPIEL:

Für gpu0_eth:

Hier können Sie Attribute wie Betriebsstatus, Adresse, MTU, Geschwindigkeit und Schnittstellenstatistiken (einschließlich übertragener und empfangener Pakete, verworfener Pakete sowie ECN-markierter Pakete, empfangener CNP-Pakete und übertragener CNP-Pakete) überprüfen:

Um die ECN-Statistik zu überprüfen, überprüfen Sie die zugehörigen Zähler für die jeweilige Schnittstelle:

Um die PFC-Statistik zu überprüfen, verwenden Sie:

BEISPIEL:

Konfigurieren des Servers für die Verwendung der Verwaltungsschnittstelle für RCCL-Steuerungsdatenverkehr:

Die ROCm Communication Collectives Library (RCCL) erstellt TCP-Sitzungen zur Koordination von Prozessen und zum Austausch von Warteschlangenpaarinformationen für RoCE, GIDs (Global IDs), lokale und Remote-Pufferadressen, RDMA-Schlüssel (RKEYs für Speicherzugriffsberechtigungen)

HINWEIS: Dieser Datenverkehr ist vom RoCEv2-Datenverkehr (Port 4791) getrennt und wird für die Synchronisierung von Modellparametern, Teilergebnissen von Operationen usw. verwendet.

Diese TCP-Sitzungen werden beim Start des Jobs erstellt und verwenden standardmäßig eine der GPU-Schnittstellen (dieselben Schnittstellen, die für den RoCEv2-Datenverkehr verwendet werden).

Beispiel:

Es wird empfohlen, die mit der (Frontend-Fabric) verbundene Verwaltungsschnittstelle zu verwenden. Fügen Sie dazu beim Starten eines Jobs Folgendes hinzu: export NCCL_SOCKET_IFNAME="mgmt_eth". Die gleiche Umgebungsvariable gilt sowohl für NCCL als auch für RCCL.

Beispiel:

HINWEIS: ECN ist für diese Sitzungen standardmäßig aktiviert. net.ipv4.tcp_ecn = 1 , kann aber deaktiviert werden mit: sudo sysctl -w net.ipv4.tcp_ecn=0

AMD Pollara DCQCN-Konfiguration für RDMA-Datenverkehr

Für die AMD Pollara-Validierung muss DCQCN aktiviert sein, und QOS muss auf die AMD NIC-Karten angewendet werden.

  1. Konfigurieren Sie Qos auf den NICs mithilfe des Skripts. Die DSCP-Parameter entsprechen den in Tabelle 25 vorgeschlagenen Werten. DCQCN-Konfigurationsparameter des Servers.
  2. Mit dem AMD-Befehlszeilenprogramm nicctl unten sind die QOS-Parameter konfiguriert:
  3. Mit dem rdma link Befehl kann überprüft werden, ob die Zuordnung von roce-devices zu den AMD Pollara NIC-Karten vorhanden ist.

    Die roce-devices werden erstellt, wenn die ionic_rdma Kernel-Modul geladen wird, und sollten die folgende roce-device-Datei für jede NIC Karte erstellen.

  4. Um DCQCN auf den AMD Pollara-NICs zu konfigurieren, führen Sie das folgende Skript mit den entsprechenden Parametern aus.
  5. Überprüfen Sie mit dem Befehl nicctl das DCQCN-Profil für jedes roce-Gerät.
  6. Führen Sie schließlich das rccl_test.sh Skript wie folgt aus. Das folgende Beispiel zeigt die Tests, die für "Alle reduzieren" ausgeführt werden.