web-dev-qa-db-ja.com

ECCチップキルエラー:どのDIMMですか?

多くの場合、サーバーのDIMMが不良になり、syslogに次のエラーが表示されます。

5月7日09:15:31 nolcgi303カーネル:EDAC k8 MC0:一般的なバスエラー:参加プロセッサ(ローカルノード応答)、タイムアウト(タイムアウトなし)メモリトランザクションタイプ(汎用読み取り)、memまたはi/o(memアクセス) 、キャッシュレベル(汎用)
 5月7日09:15:31 nolcgi303カーネル:MC0:CEページ0xa0、オフセット0x40、粒度8、シンドローム0xb50d、行2、チャネル0、ラベル "":k8_edac 
 5月7日09:15:31 nolcgi303カーネル:MC0:CE-利用可能な情報なし:k8_edacエラーオーバーフローセット
 5月7日09:15:31 nolcgi303カーネル:EDAC k8 MC0:拡張エラーコード:ECCチップキルx4エラー

HP SmartStart CDを使用して、エラーが発生しているDIMMを特定できますが、そのためにはサーバーの生産を停止する必要があります。サーバーが稼働しているときにどのDIMMが破綻するかを理解するための賢い方法はありますか?すべてのサーバーは、RHEL 5を実行するHPハードウェアです。

8
markdrayton

EDACコードの使用に加えて、マシンがオンラインのときに、CLIのみHPユーティリティを使用してこれを確認できます。 CLIバージョンは、Webベースのバージョンよりもはるかに軽量であり、ポートを開いたり、デーモンを継続的に実行したりする必要はありません。

hpasmcliは、障害のあるモジュールのカートリッジとモジュール番号を提供します。 EDACの分析よりも少し速い。

例:

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

障害が発生したモジュールのステータスは変更されます。

4
Josh

MC0、行2、およびチャネル0は重要です。 CPU0のDIMMA1を交換してください。

例として、完全に実装された16個のDIMMスロットと2つのCPUを搭載したLinuxサーバーで、不良DIMMを特定する必要がありました。これらは私がコンソールで見たエラーです:

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

サーバーの不良DIMMはCPU1のDIMMA0でした。

EDACはError Detection And Correctionの略で、 http://www.kernel.org/doc/Documentation/edac.txt および/usr/share/doc/kernel-doc-2.6*/に記載されています。私のシステム(RHEL5)上のDocumentation/drivers/edac/edac.txt。 CEは「訂正可能なエラー」を表しており、ドキュメントに示されているように、「CEはDIMMが故障し始めていることを早期に示しています。」

上記のサーバーのコンソールで見たEDACエラーに戻ると、MC1(メモリコントローラー1)はCPU1を意味し、行1はLinux EDACドキュメントではcsrow1(チップ選択行1)と呼ばれ、チャネル0はメモリチャネル0を意味します。 http://www.kernel.org/doc/Documentation/edac.txt でチャートをチェックして、csrow1とチャネル0がDIMM_A0(システム上のDIMMA0)に対応していることを確認しました。

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

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

(別の例として、MC0、csrow4、およびChannel 1でエラーが発生した場合は、CPU0のDIMMB2を交換していました。)

もちろん、実際には私のサーバーにはDIMMA0という2つのDIMMスロット(CPUごとに1つ)がありますが、MC1エラーはdmidecodeの出力の「Bank Locator」の下にリストされているCPU1に対応しています。

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

(私のワークステーションでは、dmidecodeは実際にはDIMMの部品番号とシリアル番号を表示します。これは非常に便利です。)

コンソールおよびログでエラーを確認することに加えて、/ sys/devices/system/edacを調べることにより、MC/CPU、行/ csrow、およびチャネルごとのエラーを確認することもできます。私の場合、エラーはMC1、csrow1、チャネル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

この例が、EDACエラーに基づいて不良DIMMを識別しようとしている人にとって役立つことを願っています。詳細については、 http://www.kernel.org/doc/Documentation/edac.txt にあるすべてのLinux EDACドキュメントを読むことを強くお勧めします。

17
Philip Durbin