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

Lesedauer: 7 Minute
0

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

Kurzbeschreibung

AWS bietet mehrere EC2-Instance-Familien mit GPU-Beschleunigung. GPUs werden für alle GPU-beschleunigten EC2-Instance-Familien an Gast-Instances weitergegeben. Auf diese Weise können Sie den vollen Funktionsumfang der GPU-Hardware nutzen.

Behebung

Lesen und interpretieren nvidia-SMI-Diagnosen

Verwenden Sie das Tool nvidia-smi, um Statistiken und Diagnosen über den Zustand und die Leistung der NVIDIA-GPUs abzurufen, die an Ihre Instance angeschlossen sind. Der NVIDIA-GPU-Treiber stellt dieses Tool automatisch bereit, einschließlich aller Varianten des Deep Learning Amazon Machine Image (AMI). Einzelheiten zur Installation des NVIDIA-GPU-Treibers für jede GPU-Instance-Familie finden Sie unter Installieren NVIDIA-Treiber auf Linux-Instances.

Führen Sie 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 volatile Speicherstatistiken der GPU-Hardware auf. Beachten Sie, dass aggregierte ECC-Fehlerzähler für die gesamte Lebensdauer der GPU bestehen bleiben. Ein positiver Wert bedeutet nicht, dass in der Instance ein Hardwareproblem oder eine fehlerhafte GPU vorliegt. Der positive Wert könnte aus der Vergangenheit stammen, daher ist es wichtig, volatile Kennzahlen zu überprüfen.

Flüchtige ECC-Fehler werden jedoch ab dem letzten Neuladen des GPU-Treibers von Null aus erhöht. Nicht korrigierbare ECC-Fehler werden während der Lebensdauer der Instance inkrementiert. Wenn die ECC-Fehler volatil sind, müssen Sie möglicherweise die Instance neu starten oder die GPU zurücksetzen. Je nach Instance-Typ und GPU-Generierung initiiert ein Neustart entweder die Ausmusterung von Seiten oder die Neuzuordnung von Zeilen für fehlerhafte Speicherseiten.

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. Sie können Einzelbitfehler ignorieren, da sie im Allgemeinen harmlos sind. Die GPU-Firmware identifiziert Doppelbitfehler.

Wenn die GPU-Firmware Doppelbitfehler erkennt, stoppt die GPU die Verarbeitung und die Anwendung wird abrupt beendet. Wenn Doppelbitfehler auftreten, wird ein Xid-Fehler im Protokoll des Betriebssystems (operating system) (OS) aufgezeichnet, und der Status Blacklist für ausstehende Seiten lautet Ja. Um diese Fehler zu beheben, starten Sie die Instance neu, um den fehlerhaften Speicherplatz zu löschen. Nach dem Neustart wird der Status der schwarzen Liste 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 also nicht auf ein aktives Hardwareproblem oder eine fehlerhafte GPU hin.

P4d-, P4de-, G5- und G5g-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 Speicherfehler und enthalten sie durch Zeilenneuzuordnung. Ähnlich wie beim dynamischen Ausmustern von Seiten, verhindert die Zeilenneuzuordnung die Wiederverwendung von bekannten heruntergekommenen Speicherorten. Die Zeilenneuzuordnung ersetzt das Schema für die Seiten-Außerbetriebnahme-in GPUs früherer Generationen.

Sie können korrigierbare Speicherfehler ignorieren. Nicht korrigierbare Fehler können zu Fehlern oder einem abrupten Beenden der Anwendung führen. Nicht korrigierbare Fehler werden als Xid-Fehler im Betriebssystemprotokoll protokolliert.

Ausstehende neu zugeordnete Zeilen, die nach einem nicht behebbaren Fehler aktiviert werden, erfordern einen GPU-Reset, um den fehlerhaften Speicherplatz zu löschen. Starten Sie die Instance neu, um die GPU zurückzusetzen. Oder führen Sie den folgenden Befehl aus, um die GPU manuell zurückzusetzen:

sudo nvidia-smi -i <GPU UUID> -r

Wenn ein Fehler bei der Neuzuordnung auftritt, beenden und starten Sie die Instance. Durch das Stoppen und Starten der Instance wird die Instance auf einen neuen zugrunde liegenden Host mit einer fehlerfreien GPU migriert.

Erkennung ungesunder GPUs

AWS verwendet Automatisierung, um regelmäßig Diagnosen durchzuführen und fehlerhafte GPUs zu erkennen. Alle GPUs, die sich aufgrund von Hardwarefehlern in einem ungesunden Zustand befinden, werden schließlich identifiziert und automatisch ersetzt.

Fehlermodi

Der GPU-Treiber für alle Generationen von NVIDIA-GPUs schreibt Fehler als Xid-Fehler in die Betriebssystemprotokolle. Eine Kategorisierung und Beschreibung dieser Fehler finden Sie unter Xid-Fehler auf der NVIDIA-Website.

Die folgende Liste häufiger Xid-Fehler enthält bewährte Methoden zur Behebung der Probleme:

Falsche Anzahl von GPUs oder es fehlen GPUs

Führen Sie folgenden Befehl aus:

nvidia-smi —list-gpus | wc -l

Stellen Sie in der Befehlsausgabe sicher, dass die Anzahl der angeschlossenen GPUs der erwarteten Anzahl von GPUs für Ihren Instance-Typ entspricht. Wenn eine GPU fehlt, beenden und starten Sie die Instance.

Xid 48: Ein DBE ist aufgetreten.
Xid 63: Eine Seite wurde erfolgreich zurückgezogen.
Xid 64: Eine Seite wurde aufgrund eines Fehlers nicht in den Ruhestand versetzt.

Die vorherigen Fehler weisen darauf hin, dass ein ECC-Fehler aufgetreten ist. Um dieses Problem zu beheben, führen Sie die Schritte im Abschnitt Falsche Anzahl von GPUs oder fehlende GPUs aus.

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

Der Fehler Xid 79 weist darauf hin, dass die Instance die Kommunikation mit der zugrunde liegenden GPU verloren hat. Um dieses Problem zu beheben, starten Sie die Instance neu. Wenn das Problem nach dem Neustart weiterhin besteht, beenden und starten Sie Ihre Instance.

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

Der Fehler InfoROM ist beschädigt weist darauf hin, dass ein Teil der GPU-Firmware beschädigt ist. Um dieses Problem zu beheben, starten Sie die Instance neu oder setzen Sie die GPU zurück. Wenn das Problem nach dem Neustart weiterhin besteht, beenden und starten Sie Ihre Instance.

NVRM: Xid 119 PCI:00:00:00:00): Timeout beim Warten auf RPC von GSP!
NVRM: Xid 120 PCI:00:00:00:00): GSP-Fehler: Aufgabe 1 hat den Fehlercode ausgelöst...

Die oben genannten Fehler treten auf, wenn der GPU Systems Processor (GSP) eingeschaltet ist. Stellen Sie sicher, dass GSP im GPU-Treiber oder Kernelmodul deaktiviert ist.

Bewährte Vorgehensweisen

  • Verwenden Sie nach Möglichkeit den neuesten Treiber und die neueste CUDA-Laufzeit. In neueren Versionen des GPU-Treibers werden häufig Korrekturen, Verbesserungen und Optimierungen eingeführt. Diese Updates können jedoch funktionale Änderungen enthalten. Stellen Sie zuerst Treiber-Updates auf GPU-Instances bereit, die nicht in der Produktion sind, und testen Sie sie.
  • Ähnlich wie herkömmliche x86-CPUs mit Turbo-Boost haben GPUs eine Kern- und Speichertaktrate, die sich je nach Auslastung dynamisch ändert. Um die beste Leistung zu erzielen, stellen Sie die GPU-Kern- und Speichertaktraten dauerhaft auf ihre maximale Geschwindigkeit ein. Weitere Informationen finden Sie unter Optimieren der GPU-Einstellungen.
  • Schalten Sie GSP aus. Bei neueren Instance-Generationen enthalten NVIDIA-GPUs die GSP-Firmware-Funktion. GSP wurde entwickelt, um die GPU-Initialisierung und andere Verwaltungsaufgaben auszulagern. Weitere Informationen finden Sie unter Ausschalten GSP-Firmware auf der NVIDIA-Website.
  • Verwenden Sie den Amazon CloudWatch-Agenten, um Ihre GPUs zu überwachen. Der CloudWatch-Agent unterstützt nativ NVIDIA-GPU-Metriken, die Sie von CloudWatch aus erfassen und überwachen können. Weitere Informationen finden Sie unter Erfassen von NVIDIA-GPU-Metriken.

Wenden Sie sich an den AWS Support

Geben Sie in Ihrem Supportfall Ihre Instance-ID und die Ausgabe des Befehls nvidia-smi -q an.

Führen Sie außerdem den Befehl sudo nvidia-bug-report.sh aus, der im NVIDIA-GPU-Treiber enthalten ist. Das Skript nvidia-bug-report.sh erfasst wichtige Protokolle und andere Diagnoseinformationen. Das Skript erstellt eine komprimierte Protokolldatei mit dem Namen nvidia-bug-report.log.gz in Ihrem aktuellen Arbeitsverzeichnis, die Sie abrufen und dem AWS-Support zur Verfügung stellen können.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 8 Monaten