Errori di chipkill ECC: quale DIMM?


8

Spesso i DIMM nei nostri server vanno male con i seguenti errori in syslog:

7 maggio 09:15:31 kernel nolcgi303: EDAC k8 MC0: errore generale del bus: processore partecipante (risposta nodo locale), timeout (nessun timeout) tipo di transazione memoria (lettura generica), mem o i / o (accesso mem) , livello di cache (generico)
7 maggio 09:15:31 kernel nolcgi303: MC0: pagina CE 0xa0, offset 0x40, grana 8, sindrome 0xb50d, riga 2, canale 0, etichetta "": k8_edac
7 maggio 09:15:31 kernel nolcgi303: MC0: CE - nessuna informazione disponibile: k8_edac Error Overflow set
7 maggio 09:15:31 kernel nolcgi303: EDAC k8 MC0: codice di errore esteso: errore ECC chipkill x4

È possibile utilizzare il CD HP SmartStart per determinare quale modulo DIMM presenta l'errore ma ciò richiede la disattivazione della produzione del server. Esiste un modo astuto per capire quale busto del DIMM mentre il server è attivo? Tutti i nostri server sono hardware HP con RHEL 5.


memtest86 + ma suppongo che non puoi eseguirlo mentre RHEL è in esecuzione
Alex Bolotov,

Stai eseguendo la homepage di HP SIM (o la SIM completa per quella materia in realtà) sulla scatola? in tal caso offrirà molte più informazioni. Altrimenti avrei bisogno di sapere un po 'più informazioni sull'offset di memoria da un errore più dettagliato.
Chopper3

Non stiamo eseguendo nessuna delle cose di HP SIM sulla scatola in quanto generalmente troviamo più problemi di quanti ne valga la pena. Se non riusciamo a capire quale DIMM è morto mentre è online non è uno spettacolo - sono solo alla ricerca di modi per risparmiare tempo: ~)
markdrayton,

Risposte:


4

Oltre a utilizzare i codici EDAC, è possibile utilizzare la CLI solo le utility HP per determinare ciò mentre la macchina è online. Le versioni cli sono molto più leggere di quelle basate sul web e non richiedono l'apertura di porte o il funzionamento costante di un demone.

hpasmcli fornisce la cartuccia e il numero di modulo dei moduli guasti. Un po 'più veloce dell'analisi EDAC.

Esempio:

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

Lo stato cambierà per i moduli guasti.


Ah, è fantastico! Richiede anche un set di pacchetti abbastanza piccolo: OpemIPMI, OpenIPMI-libs e hp-health. Almeno questo è quello che ha funzionato su un BL465 - Non sono riuscito a far funzionare il demone ipmi su un BL25: kernel: ipmi_si: Impossibile trovare idee sulle interfacce di sistema? Non molto su Internet :(
markdrayton,

Non ho riscontrato nemmeno questo problema. Utilizzato solo i programmi di utilità sui server DL380 / 5 e DL580 / 5.
Josh,

17

MC0, riga 2 e canale 0 sono significativi. Prova a sostituire DIMMA1 su CPU0.

A titolo di esempio, ho dovuto identificare un DIMM difettoso in un server Linux con 16 slot DIMM completamente popolati e due CPU. Questi sono gli errori che ho visto sulla console:

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

Il DIMM errato nel mio server era DIMMA0 su CPU1.

EDAC sta per Error Detection And Correction ed è documentato su http://www.kernel.org/doc/Documentation/edac.txt e /usr/share/doc/kernel-doc-2.6*/Documentation/drivers/edac/edac .txt sul mio sistema (RHEL5). CE sta per "errori corretti" e, come indica la documentazione, "i CE forniscono indicazioni precoci che un DIMM sta iniziando a fallire".

Tornando agli errori EDAC sopra che ho visto sulla console del mio server, MC1 (Memory Controller 1) significa CPU1, la riga 1 è indicata come csrow1 (Chip-Select Row 1) nella documentazione EDAC di Linux, e il canale 0 indica il canale di memoria 0 Ho controllato il grafico su http://www.kernel.org/doc/Documentation/edac.txt per vedere che csrow1 e Channel 0 corrispondono a DIMM_A0 (DIMMA0 sul mio sistema):

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

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

(Come altro esempio, se avessi visto errori su MC0, csrow4 e Channel 1, avrei sostituito DIMMB2 su CPU0.)

Naturalmente, sul mio server ci sono in realtà due slot DIMM chiamati DIMMA0 (uno per ogni CPU), ma l'errore MC1 corrisponde di nuovo a CPU1, elencato sotto "Bank Locator" nell'output di dmidecode:

[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:

(Sulla mia workstation, dmidecode mostra effettivamente il numero di parte e il numero di serie per i miei DIMM, il che è molto utile.)

Oltre a guardare gli errori sulla console e nei registri, puoi anche vedere gli errori per MC / CPU, riga / csrow e canale esaminando / sys / devices / system / edac. Nel mio caso gli errori erano solo su MC1, csrow1, canale 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

Spero che questo esempio sia utile per chiunque cerchi di identificare un DIMM errato sulla base di errori EDAC. Per ulteriori informazioni, consiglio vivamente di leggere tutta la documentazione Linux EDAC su http://www.kernel.org/doc/Documentation/edac.txt


1
Risposta formidabile! Questa è di gran lunga la risposta migliore qui e ti guida perfettamente attraverso come risolvere il problema e isolare il DIMM difettoso.
slm

E cosa fare se il messaggio è MC0: UE row 0, channel-a= 2 channel-b= 3.
Mitar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.