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
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 :~)