teketeke_55の日記

技術メモとか

supermicro 3012X3-A12W-R3にメモリ増設した際のめも

ECCメモリエラー発生

以下のメモリを4枚差しで8GBにしたころCentOS5.6の起動時にエラーが発生

 Kingston 2GB 800MHz DDR2 ECC CL5 DIMM KVR800D2E5/2G 

LOG

May  6 14:38:09 xxx kernel: EDAC MC0: UE page 0x0, offset 0x0, grain  1073741824, row 2, labels ":": i3200 UE

OS事体は起動しているが画面に出力し続ける。~

メッセージの内容としては修復不能なエラーが発生したときに出るメッセージの模様

・やったこと
MEM86+では2PASS確認済み。
BIOSのLOG確認→メモリエラーは出ていない。BIOS画面では正常に認識。
メモリ全て一度抜き差し→状況変わらず。
一枚ずつ抜いて起動テスト→DIMM0のみ差している場合はエラーが出ない。
4枚のメモリをDIMM0にそれぞれ差して起動テスト→エラーなし。
DIMM0に刺さっている状態でDIMM1~DIMM3にそれぞれ一枚ずつ差して起動テスト→同じエラー発生。

上記から、メモリ自体の問題ではなくOS側の処理の問題の可能性が高いとみた。

・bugzillaトピックがあった。~
https://bugzilla.redhat.com/show_bug.cgi?id=564274~
4GB以上になるとEDACというモジュールがフェイクエラーを出すバグの模様~
特定のBIOSとカーネルモジュールの組み合わせで発生するとのこと。~

解決するには

 Some i3210 BIOSes have problems enabling the hardware
 checks at the MCU. On those hardware, customers should try
 to disable Quickboot and/or"Memory Remap Feature" or to
 disable EDAC drivers

で行けるらしい。~
今回のsupermicroに

"Quickboot" "Memory Remap Feature"は無いので
"disable EDAC drivers"
で行くことにした。

edacが有効なときの表示。無効にするとこれが出なくなるはず。

# lsmod | grep edac
 i3200_edac             38865  0 
 edac_mc                60449  1 i3200_edac

無効にするにはブラックリストに下記を追加してOSを再起動

 /etc/modprobe.d/blacklist:
 blacklist i3200_edac

上記ファイルがない場合はblacklist.confに記載する~

再起動後確認

# lsmod | grep edac

何もでない。エラーも出なくなった。

そもそもEDACてなに?て人は [#ff516434]

現象

 RHEL4および5では、EDAC (Error Detection and Correction)という仕組みが実装されて おり、これによりハードウェアエラーをOSから取得することができます。しかし、この機能を有効にした場合は、RSA II(リモート管理アダプターII)もしくはBladeCenter MM/aMM(管理モジュール/アドバンスト管理モジュール)によるエラー検知を正しく行うことができません。

原因

 LinuxのEDAC (Error Detection and Correction) は、Linux上からハードウェアエラーを取得する仕組みで、現在の実装ではメモリのECCエラーなどを検知し、OSのログに記録することができます。

 /var/log/messages出力例 Oct 5 13:49:44 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)
 Oct 5 13:49:44 kernel: MC0: CE page 0x391c3, offset 0xee0, grain 8, syndrome  0xa3b8, row 0, channel 1, label "": k8_edac
 Oct 5 13:49:44 kernel: MC0: CE - no information available: k8_edac Error Overflow set 

Linux EDACは、現在のところ

 1. 毎秒エラー情報を確認するため、システムの負荷が高い
 2. チップセットのレジスターからエラー情報を読んだあと、カウンターをゼロにリセットする
 という動きになっており、2. のために、RSA IIやMM/aMMによるイベントログが正しく記 録できません。

引用元
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0010EE4A

本家
http://buttersideup.com/edacwiki/Main_Page