8 votes

Erreurs de chipkill ECC : quel DIMM ?

Nous avons souvent des DIMMs dans nos serveurs qui deviennent défectueux avec les erreurs suivantes dans le syslog :

May  7 09:15:31 nolcgi303 kernel: EDAC k8 MC0: general bus error: participating processor(local node response), time-out(no timeout) memory transaction type(generic read), mem or i/o(mem access), cache level(generic)
May  7 09:15:31 nolcgi303 kernel: MC0: CE page 0xa0, offset 0x40, grain 8, syndrome 0xb50d, row 2, channel 0, label "": k8\_edac
May  7 09:15:31 nolcgi303 kernel: MC0: CE - no information available: k8\_edac Error Overflow set
May  7 09:15:31 nolcgi303 kernel: EDAC k8 MC0: extended error code: ECC chipkill x4 error

Nous pouvons utiliser le CD HP SmartStart pour déterminer quel module DIMM présente l'erreur, mais cela nécessite de mettre le serveur hors production. Existe-t-il un moyen astucieux de déterminer quel module DIMM présente une erreur alors que le serveur est en fonctionnement ? Tous nos serveurs sont du matériel HP exécutant RHEL 5.

0 votes

Memtest86+ mais je suppose que vous ne pouvez pas l'exécuter pendant que RHEL est en cours d'exécution.

0 votes

Utilisez-vous la page d'accueil de la carte SIM HP (ou la carte SIM complète, d'ailleurs) sur le boîtier ? Si oui, vous aurez beaucoup plus d'informations. Sinon, j'aurais besoin de connaître un peu plus d'informations sur le décalage de la mémoire à partir d'une erreur plus détaillée.

0 votes

Nous n'utilisons pas le matériel HP SIM sur le boîtier, car nous trouvons généralement que cela pose plus de problèmes que cela n'en vaut la peine. Si nous ne pouvons pas déterminer quel DIMM est mort alors que nous sommes en ligne, ce n'est pas un obstacle - je suis juste à la recherche de moyens pour gagner du temps :~)

17voto

Junfeng Points 361

MC0, la rangée 2 et le canal 0 sont significatifs. Essayez de remplacer DIMMA1 sur CPU0.

À titre d'exemple, j'ai dû identifier un module DIMM défectueux dans un serveur Linux doté de 16 emplacements DIMM entièrement remplis et de deux CPU. Voici les erreurs que j'ai vues sur la 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

Le mauvais DIMM dans mon serveur était DIMMA0 sur CPU1.

EDAC signifie Error Detection And Correction (détection et correction d'erreurs) et est documenté à l'adresse suivante http://www.kernel.org/doc/Documentation/edac.txt et /usr/share/doc/kernel-doc-2.6*/Documentation/drivers/edac/edac.txt sur mon système (RHEL5). CE signifie "erreurs corrigibles" et comme l'indique la documentation, "les CE fournissent des indications précoces qu'un DIMM commence à tomber en panne."

Pour en revenir aux erreurs EDAC ci-dessus que j'ai vues sur la console de mon serveur, MC1 (Memory Controller 1) signifie CPU1, la rangée 1 est appelée csrow1 (Chip-Select Row 1) dans la documentation EDAC de Linux, et canal 0 signifie canal de mémoire 0. J'ai vérifié le tableau à http://www.kernel.org/doc/Documentation/edac.txt pour voir que csrow1 et Channel 0 correspondent à DIMM_A0 (DIMMA0 sur mon système) :

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

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

(Comme autre exemple, si j'avais vu des erreurs sur MC0, csrow4, et Channel 1, j'aurais remplacé DIMMB2 sur CPU0).

Bien sûr, il y a en fait deux emplacements DIMM appelés DIMMA0 sur mon serveur (un pour chaque CPU), mais là encore l'erreur MC1 correspond au CPU1, qui est listé sous "Bank Locator" dans la sortie de 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:

(Sur ma station de travail, dmidecode montre en fait le numéro de pièce et le numéro de série de mes DIMM, ce qui est très utile).

En plus de regarder les erreurs sur la console et dans les journaux, vous pouvez également voir les erreurs par MC/CPU, rangée/rangée et canal en examinant /sys/devices/system/edac. Dans mon cas, les erreurs étaient uniquement sur MC1, csrow1, canal 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

J'espère que cet exemple sera utile à tous ceux qui essaient d'identifier un mauvais DIMM sur la base des erreurs EDAC. Pour plus d'informations, je vous recommande vivement de lire toute la documentation EDAC Linux à l'adresse suivante http://www.kernel.org/doc/Documentation/edac.txt

4voto

Phill Pafford Points 349

En plus de l'utilisation des codes EDAC, vous pouvez utiliser les utilitaires HP CLI uniquement pour déterminer cela lorsque la machine est en ligne. Les versions CLI sont beaucoup plus légères que les versions Web et ne nécessitent pas l'ouverture de ports ou l'exécution constante d'un démon.

hpasmcli vous donnera les numéros de cartouche et de module des modules défaillants. Un peu plus rapide que l'analyse de l'EDAC.

Ejemplo:

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

L'état change pour les modules en panne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X