Nous obtenons souvent des modules DIMM dans nos serveurs qui vont mal avec les erreurs suivantes dans syslog:
7 mai 09:15:31 nolcgi303 noyau: EDAC k8 MC0: erreur de bus générale: processeur participant (réponse du nœud local), time-out (pas de timeout) type de transaction mémoire (lecture générique), mem ou i / o (accès mem) , niveau de cache (générique) 7 mai 09:15:31 noyau nolcgi303: MC0: page CE 0xa0, décalage 0x40, grain 8, syndrome 0xb50d, ligne 2, canal 0, étiquette "": k8_edac 7 mai 09:15:31 noyau nolcgi303: MC0: CE - aucune information disponible: k8_edac Error Overflow set 7 mai 09:15:31 noyau nolcgi303: EDAC k8 MC0: code d'erreur étendu: erreur ECC chipkill x4
Nous pouvons utiliser le CD HP SmartStart pour déterminer quelle barrette DIMM présente l'erreur, mais cela nécessite de retirer le serveur de la production. Existe-t-il un moyen astucieux de déterminer quel module DIMM tombe en panne lorsque le serveur est en marche? Tous nos serveurs sont du matériel HP exécutant RHEL 5.
Réponses:
En plus d'utiliser les codes EDAC, vous pouvez utiliser les utilitaires HP CLI uniquement pour le déterminer lorsque la machine est en ligne. Les versions cli sont beaucoup plus légères que celles basées sur le Web et ne nécessitent pas d'ouvrir des ports ou d'avoir un démon en cours d'exécution.
hpasmcli vous fournira la cartouche et les numéros de module des modules défectueux. Un peu plus rapide que l'analyse d'EDAC.
Exemple:
L'état changera pour les modules défaillants.
la source
MC0, ligne 2 et canal 0 sont significatifs. Essayez de remplacer DIMMA1 sur CPU0.
À titre d'exemple, j'ai dû identifier un mauvais module DIMM dans un serveur Linux avec 16 emplacements DIMM entièrement remplis et deux processeurs. Ce sont les erreurs que j'ai vues sur la console:
Le mauvais module DIMM de mon serveur était DIMMA0 sur CPU1.
EDAC signifie Error Detection And Correction et est documenté à 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 module DIMM commence à tomber en panne».
Pour revenir aux erreurs EDAC ci-dessus que j'ai vues sur la console de mon serveur, MC1 (contrôleur de mémoire 1) signifie CPU1, la ligne 1 est appelée csrow1 (Chip-Select Row 1) dans la documentation Linux EDAC, et le canal 0 signifie le canal de mémoire 0 J'ai vérifié le graphique à http://www.kernel.org/doc/Documentation/edac.txt pour voir que csrow1 et Channel 0 correspondent à DIMM_A0 (DIMMA0 sur mon système):
(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 encore une fois l'erreur MC1 correspond à CPU1, qui est répertoriée sous "Bank Locator" dans la sortie de dmidecode:
(Sur mon poste de travail, dmidecode affiche en fait le numéro de pièce et le numéro de série de mes modules 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, ligne / csrow et canal en examinant / sys / devices / system / edac. Dans mon cas, les erreurs étaient uniquement sur MC1, csrow1, canal 0:
J'espère que cet exemple est utile pour quiconque essaie d'identifier un mauvais module DIMM en raison d'erreurs EDAC. Pour plus d'informations, je recommande fortement de lire toute la documentation Linux EDAC sur http://www.kernel.org/doc/Documentation/edac.txt
la source
MC0: UE row 0, channel-a= 2 channel-b= 3
.