ECC-Chipkill-Fehler: Welches DIMM?

8

Wir bekommen oft DIMMs auf unseren Servern mit den folgenden Fehlern im Syslog schlecht:

7. Mai 09:15:31 nolcgi303 Kernel: EDAC k8 MC0: Allgemeiner Busfehler: Teilnehmender Prozessor (lokale Knotenantwort), Zeitüberschreitung (keine Zeitüberschreitung) Speichertransaktionstyp (generisches Lesen), Mem oder E / A (Mem-Zugriff) , Cache-Ebene (generisch)
7. Mai 09:15:31 nolcgi303 Kernel: MC0: CE Seite 0xa0, Offset 0x40, Korn 8, Syndrom 0xb50d, Zeile 2, Kanal 0, Label "": k8_edac
7. Mai 09:15:31 nolcgi303 Kernel: MC0: CE - keine Informationen verfügbar: k8_edac Fehlerüberlauf eingestellt
7. Mai 09:15:31 nolcgi303 Kernel: EDAC k8 MC0: erweiterter Fehlercode: ECC Chipkill x4 Fehler

Wir können die HP SmartStart-CD verwenden, um festzustellen, bei welchem ​​DIMM der Fehler auftritt. Dazu muss jedoch der Server aus der Produktion genommen werden. Gibt es eine clevere Möglichkeit, herauszufinden, welche DIMM-Pleite bei laufendem Server vorhanden ist? Alle unsere Server sind HP Hardware mit RHEL 5.

Markdrayton
quelle
memtest86 + aber ich nehme an, Sie können es nicht ausführen, während RHEL ausgeführt wird
Alex Bolotov
Führen Sie die HP SIM-Homepage (oder tatsächlich die vollständige SIM-Karte) auf der Box aus? Wenn ja, bietet das viel mehr Informationen. Andernfalls müsste ich aufgrund eines detaillierteren Fehlers etwas mehr Informationen über den Speicheroffset wissen.
Chopper3
Wir führen keine HP SIM-Geräte auf der Box aus, da wir im Allgemeinen mehr Probleme haben, als es wert ist. Wenn wir nicht herausfinden können, welches DIMM im Internet tot ist, ist es kein Showstopper - ich bin nur auf der Suche nach Möglichkeiten, Zeit zu sparen: ~)
Markdrayton

Antworten:

4

Zusätzlich zur Verwendung der EDAC-Codes können Sie die HP Dienstprogramme nur für die CLI verwenden, um dies zu ermitteln, während der Computer online ist. Die CLI-Versionen sind weitaus leichter als die webbasierten und erfordern nicht, dass Sie Ports öffnen oder einen Daemon ständig ausführen.

hpasmcli gibt Ihnen die Kassette und die Modulnummern der ausgefallenen Module. Ein bisschen schneller als die Analyse von EDAC.

Beispiel:

hpasmcli -s "show dimm"

DIMM Configuration
------------------
Cartridge #: 0
Module #: 1
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 2
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 3
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 4
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Der Status ändert sich für ausgefallene Module.

Josh
quelle
Ah, das ist großartig! Benötigt auch einen relativ kleinen Satz von Paketen: OpemIPMI, OpenIPMI-libs und hp-health. Zumindest hat das auf einem BL465 funktioniert - ich konnte den ipmi-Daemon nicht auf einem BL25 ausführen: kernel: ipmi_si: Sie konnten keine Systemschnittstellen finden - Ideen? Nicht viel im Internet :(
Markdrayton
Ich bin auch nicht auf dieses Problem gestoßen. Verwendete die Dienstprogramme nur auf DL380 / 5- und DL580 / 5-Servern.
Josh
17

MC0, Zeile 2 und Kanal 0 sind signifikant. Versuchen Sie, DIMMA1 auf CPU0 zu ersetzen.

Als Beispiel musste ich ein fehlerhaftes DIMM in einem Linux-Server mit 16 vollständig bestückten DIMM-Steckplätzen und zwei CPUs identifizieren. Dies sind die Fehler, die ich auf der Konsole gesehen habe:

EDAC k8 MC1: general bus error: participating processor(local node origin), time-out(no timeout) memory transaction type(generic read), mem or i/o(mem access), cache level(generic)
EDAC MC1: CE page 0x103ca78, offset 0xf88, grain 8, syndrome 0x9f65, row 1, channel 0, label "": k8_edac
EDAC MC1: CE - no information available: k8_edac Error Overflow set
EDAC k8 MC1: extended error code: ECC chipkill x4 error

Das fehlerhafte DIMM auf meinem Server war DIMMA0 auf CPU1.

EDAC steht für Error Detection And Correction und ist unter http://www.kernel.org/doc/Documentation/edac.txt und /usr/share/doc/kernel-doc-2.6*/Documentation/drivers/edac/edac dokumentiert .txt auf meinem System (RHEL5). CE steht für "korrigierbare Fehler" und wie aus der Dokumentation hervorgeht, "liefern CEs frühzeitig Hinweise darauf, dass ein DIMM zu versagen beginnt."

Zurück zu den EDAC-Fehlern, die ich oben auf der Konsole meines Servers gesehen habe: MC1 (Speichercontroller 1) bedeutet CPU1, Zeile 1 wird in der Linux-EDAC-Dokumentation als csrow1 (Chip-Select-Zeile 1) bezeichnet, und Kanal 0 bedeutet Speicherkanal 0 Ich habe das Diagramm unter http://www.kernel.org/doc/Documentation/edac.txt überprüft , um festzustellen, dass csrow1 und Channel 0 DIMM_A0 (DIMMA0 auf meinem System) entsprechen:

            Channel 0       Channel 1
    ===================================
    csrow0  | DIMM_A0       | DIMM_B0 |
    csrow1  | DIMM_A0       | DIMM_B0 |
    ===================================

    ===================================
    csrow2  | DIMM_A1       | DIMM_B1 |
    csrow3  | DIMM_A1       | DIMM_B1 |
    ===================================

(Wenn ich als weiteres Beispiel Fehler auf MC0, csrow4 und Kanal 1 gesehen hätte, hätte ich DIMMB2 auf CPU0 ersetzt.)

Natürlich gibt es auf meinem Server tatsächlich zwei DIMM-Steckplätze mit dem Namen DIMMA0 (einen für jede CPU), aber auch hier entspricht der MC1-Fehler der CPU1, die in der Ausgabe von dmidecode unter "Bank Locator" aufgeführt ist:

[root@rce-8 ~]# dmidecode -t memory | grep DIMMA0 -B9 -A8
Handle 0x002E, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x002B
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMMA0
        Bank Locator: CPU0
        Type: DDR2
        Type Detail: Synchronous
        Speed: 533 MHz (1.9 ns)
        Manufacturer:  
        Serial Number:  
        Asset Tag:  
        Part Number:  
--
Handle 0x003E, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x002B
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMMA0
        Bank Locator: CPU1
        Type: DDR2
        Type Detail: Synchronous
        Speed: 533 MHz (1.9 ns)
        Manufacturer:  
        Serial Number:  
        Asset Tag:  
        Part Number:

(Auf meiner Workstation zeigt dmidecode tatsächlich die Teilenummer und die Seriennummer für meine DIMMs an, was sehr nützlich ist.)

Neben der Anzeige von Fehlern in der Konsole und in Protokollen können Sie auch Fehler pro MC / CPU, Zeile / csrow und Kanal anzeigen, indem Sie / sys / device / system / edac untersuchen. In meinem Fall waren die Fehler nur auf MC1, csrow1, Kanal 0:

[root@rce-8 ~]# grep "[0-9]" /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count
/sys/devices/system/edac/mc/mc0/csrow0/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow0/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow1/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow1/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow2/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow2/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow3/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow3/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow4/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow4/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow5/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow5/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow6/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow6/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow7/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow7/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow0/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow0/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow1/ch0_ce_count:6941652
/sys/devices/system/edac/mc/mc1/csrow1/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow2/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow2/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow3/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow3/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow4/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow4/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow5/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow5/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow6/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow6/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow7/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow7/ch1_ce_count:0

Ich hoffe, dieses Beispiel ist hilfreich für alle, die versuchen, ein fehlerhaftes DIMM anhand von EDAC-Fehlern zu identifizieren. Für weitere Informationen empfehle ich dringend, die gesamte Linux EDAC-Dokumentation unter http://www.kernel.org/doc/Documentation/edac.txt zu lesen

Philip Durbin
quelle
1
Tolle Antwort! Dies ist bei weitem die beste Antwort hier und führt Sie perfekt durch die Lösung des Problems und die Isolierung des schlechten DIMM.
Slm
Und was tun, wenn Nachricht ist MC0: UE row 0, channel-a= 2 channel-b= 3.
Mitar