Wie behebe ich Xid-Fehler auf meiner NVIDIA-GPU-beschleunigten EC2-Linux-Instance?

Lesedauer: 6 Minute
0

Beim Ausführen meiner Anwendung auf einer NVIDIA-GPU-beschleunigten Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance stürzt meine Anwendung ab. Außerdem erhalte ich GPU-spezifische Xid-Fehler im Systemprotokoll. Ich möchte Diagnoseinformationen von der GPU abrufen und GPU-bezogene Xid-Fehler beheben.

Behebung

Hinweis: Die folgende Lösung behebt die Probleme der Instance-Typen G4, G5 und G6. GPUs werden für alle GPU-beschleunigten EC2-Instance-Familien an Gast-Instances weitergegeben.

Deine nvidia-smi-Diagnose abrufen

Verwende das Tool nvidia-smi, um Statistiken und Diagnosen über den Zustand und die Leistung der NVIDIA-GPUs abzurufen, die an deine Instance angeschlossen sind. Der NVIDIA GPU-Treiber stellt das Tool automatisch zur Verfügung und enthält alle AWS Deep Learning Amazon Machine Image (DLAMI)-Optionen. Weitere Informationen zur Installation des NVIDIA GPU-Treibers für eine beliebige GPU-Instance-Familie findest du unter Installationsoptionen.

Führe den Befehl sudo nvidia-smi -q aus, um Statistiken abzufragen.

Beispiel für Speicherstatistiken:

ECC Errors
        Volatile                              # Errors counted since last GPU driver reload
            SRAM Correctable            : 0
            SRAM Uncorrectable          : 0
            DRAM Correctable            : 0
            DRAM Uncorrectable          : 0
        Aggregate                             # Errors counted for the life of the GPU
            SRAM Correctable            : 0
            SRAM Uncorrectable          : 0
            DRAM Correctable            : 0
            DRAM Uncorrectable          : 0

Alle Generationen von NVIDIA-GPUs zeichnen aggregierte und flüchtige Speicherstatistiken der GPU-Hardware auf. Aggregierte ECC-Fehlerzähler bleiben für die gesamte Lebensdauer der GPU bestehen. Da der positive Wert möglicherweise aus einer früheren Ausgabe stammt, musst du auch die flüchtigen Metriken überprüfen. Die flüchtigen ECC-Fehler werden seit dem letzten Neuladen des GPU-Treibers von Null an hochgezählt.

ECC-Fehler, die du nicht korrigierst, nehmen im Laufe der Lebensdauer der Instance zu. Du kannst ECC-Fehler jedoch korrigieren. Um ihren Zähler zurückzusetzen, starte die Instance neu oder setze die GPU zurück. Je nach Instance-Typ und GPU-Generierung leitet ein Neustart die Ausmusterung von Seiten oder die Neuzuordnung von Zeilen für fehlerhafte Speicherseiten ein.

P3-, P3dn-, G4dn-Instances

    Retired Pages
        Single Bit ECC              : 0
        Double Bit ECC              : 0
        Pending Page Blacklist      : No

Frühe Generationen von NVIDIA-GPUs verwenden die dynamische Seitenausmusterung. Du kannst Einzelbitfehler ignorieren, da sie normalerweise keine Probleme verursachen.

Wenn die GPU-Firmware Doppelbitfehler erkennt, stoppt die GPU die Verarbeitung und die Anwendung wird abrupt beendet. Wenn Doppelbitfehler auftreten, protokolliert das Betriebssystem einen Xid-Fehler und der Status Blacklist für ausstehende Seiten lautet Ja. Um diese Fehler zu beheben, starte die Instance neu, um den fehlerhaften Speicherplatz zu löschen. Nach dem Neustart wird der Status der Blacklist für ausstehende Seiten auf Nein zurückgesetzt.

Hinweis: Die Fehlerzähler bleiben für die gesamte Lebensdauer der GPU bestehen. Ein Zähler ungleich Null beim Instance-Start weist nicht auf ein aktives Hardwareproblem oder eine fehlerhafte GPU hin.

P4d-, P4de-, G5-, G5G- und G6-Instances:

    Remapped Rows        Correctable Error                 : 0 # Can safely ignore.
        Uncorrectable Error               : 0 # If > 0, review system logs for Xid errors
        Pending                           : No # If Yes, an instance reboot or GPU reset is required.
        Remapping Failure Occurred        : No # Should always be No. If Yes, please stop/start the instance.

Spätere Instance-Familien mit A100- und A10G-GPUs isolieren und begrenzen Speicherfehler durch eine Zeilenneuzuordnung, die die Wiederverwendung bekannter fehlerhafter Speicherplätze verhindert. Die Zeilenneuzuordnung ersetzt das Schema für die Seiten-Außerbetriebnahme in GPUs früherer Generationen.

Du kannst korrigierbare Speicherfehler ignorieren. Unkorrigierbare Fehler können zu Fehlern oder zum abrupten Beenden der Anwendung führen und werden im Systemprotokoll des Betriebssystems als Xid-Fehler protokolliert.

Wenn ein unkorrigierbarer Fehler anhängige neu zugeordnete Zeilen aktiviert, musst du die GPU zurücksetzen, um den fehlerhaften Speicherplatz zu löschen. Starte die Instance neu, um die GPU zurückzusetzen. Oder führe den folgenden Befehl aus, um die GPU manuell zurückzusetzen:

sudo nvidia-smi -i GPU_UUID -r

Hinweis: Ersetze GPU_UUID durch deine GPU-ID.

Wenn ein Mapping-Fehler auftritt, stoppe und starte die Instance, um sie auf einen neuen zugrundeliegenden Host mit einer gesunden GPU zu migrieren.

Hinweis: AWS führt regelmäßige Diagnosen durch, um fehlerhafte GPUs zu erkennen und automatisch zu ersetzen.

Fehlermodi beheben

Der GPU-Treiber für alle Generationen von NVIDIA-GPUs schreibt Fehler als Xid-Fehler in die Betriebssystemprotokolle. Weitere Informationen zu diesen Fehlern findest du unter Xid-Fehler auf der NVIDIA-Website.

Falsche Anzahl von GPUs oder es fehlen GPUs

Führe den folgenden Befehl aus, um alle angeschlossenen GPUs anzuzeigen:

nvidia-smi --list-gpus | wc -l

Überprüfe in der Befehlsausgabe, ob die Anzahl der angeschlossenen GPUs der erwarteten Anzahl von GPUs für deinen Instance-Typ entspricht. Wenn eine GPU fehlt, beende und starte die Instance.

Du kannst die vorangegangenen Schritte zur Fehlerbehebung auch verwenden, um die folgenden Beispiel-ECC-Fehler zu beheben:

  • „Xid 48: A DBE has occurred“
  • „Xid 63: A page has successfully been retired“
  • „Xid 64: A page has failed retirement due to an error“

NVRM: Xid 79 (PCI:0000:00:00): Die GPU ist vom Bus gefallen

Der Fehler Xid 79 tritt auf, wenn die Instance die Kommunikation mit der zugrunde liegenden GPU verliert. Um dieses Problem zu beheben, starte die Instance neu. Wenn das Problem nach dem Neustart weiterhin besteht, beende und starte deine Instance.

WARNUNG: infoROM ist bei GPU 0000:00:00.0 beschädigt

Der Fehler infoROM is corrupted tritt auf, wenn ein Teil der GPU-Firmware beschädigt ist. Um dieses Problem zu beheben, starte die Instance neu oder setze die GPU zurück. Wenn das Problem nach dem Neustart weiterhin besteht, beende und starte deine Instance.

NVRM: Xid 119 PCI:00:00:00:00): Timeout waiting for RPC from GSP

-oder-

NVRM: Xid 120 PCI:00:00:00:00): GSP-Fehler: Task 1 raised error code

Die oben genannten Fehler treten auf, wenn du den GPU Systems Processor (GSP) aktivierst. Deaktiviere den GSP im GPU-Treiber oder im Kernelmodul, um dieses Problem zu beheben. Anweisungen zur Deaktivierung des GSP findest du unter 4.2.6. Deaktivieren der GSP-Firmware auf der NVIDIA-Website.

Zukünftige Xid-Fehler vermeiden

Verwende nach Möglichkeit den neuesten Treiber und die neueste CUDA-Laufzeit. GPU-Treiber werden häufig mit Korrekturen, Verbesserungen und Optimierungen veröffentlicht. Diese Updates können jedoch auch funktionale Änderungen enthalten. Stelle zuerst Treiber-Updates auf GPU-Instances bereit, die nicht in der Produktion sind, und teste sie.

GPUs haben eine Kern- und Speichertaktrate, die sich je nach Auslastung dynamisch ändert. Um die Leistung zu verbessern, solltest du die GPU-Kern- und Speichertaktraten dauerhaft auf ihre maximale Geschwindigkeit einstellen.

Deaktiviere GSP. Bei neueren Instance-Generationen enthalten NVIDIA-GPUs die GSP-Firmware-Funktion. Anweisungen zur Deaktivierung des GSP findest du unter 4.2.6. Deaktivieren der GSP-Firmware auf der NVIDIA-Website.

Verwende außerdem den Amazon CloudWatch-Agent, um deine GPU-Metriken zu überwachen.

Wenn du die vorangegangenen Schritte zur Fehlerbehebung durchgeführt hast und immer noch Xid-Fehler auftreten, öffne einen AWS Support-Fall. Gib deine Instance-ID und die Ausgabe des Befehls nvidia-smi -q an. Führe außerdem den Befehl sudo nvidia-bug-report.sh aus, der im NVIDIA-GPU-Treiber enthalten ist. Das Skript nvidia-bug-report.sh sammelt wichtige Protokolle und andere Diagnoseinformationen in deinem aktuellen Arbeitsverzeichnis. Hänge die komprimierte Protokolldatei nvidia-bug-report.log.gz an deinen Support-Fall an.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat