RAM ECC が動作しているかどうかを確認するにはどうすればよいでしょうか?

RAM ECC が動作しているかどうかを確認するにはどうすればよいでしょうか?

現在 Asus M5A97 Pro マザーボード (AMD 970 チップセット、FX-6100 CPU) にインストールされている非 ECC RAM を ECC RAM に交換する予定です。

RAMをインストールした後、RAM の ECC 機能が正常に動作しているかどうかを確認するにはどうすればよいですか?

dmidecode --type memory現在、各 RAM スティックに対して何が印刷されているか考えました。

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits

(まず、1 バイトあたり 1 ビットの ECC では、データ幅は 64 ビットのままですが、合計幅は 72 ビットと読み取られると予想されます。)

これは、ECC が動作しているかどうかを判断するために使用できますか? それとも、dmidecode はそのためには低レベルすぎますか? 他に何が使用できますか (ログに ECC エラーが表示されるかどうかを待って確認する以外に、動作していることは示しますが、動作していないことは示しません)?

アップデート:後で edac-utils について考えました。インストールすると、 が表示されますNot enabling Memory Error Detection and Correction since EDAC_DRIVER is not setedac-utiledac-ctl実行可能ファイルが表示されます。この目的にこれらのいずれかを使用できますか?

答え1

どうやら確実に知る方法はありませんただし、さまざまなアプローチで何らかの答えを得ることができます。どうやら、ECC が機能していることを示す方法が見つかるまで、さまざまな方法を試してみる必要があるようです。

私の場合メモリテスト86+ 4.20ECC RAM を扱っていることをうまく理解できませんでした。ECC オンに設定しても、ECC: DisabledIMC ラインで報告されました。新しいバージョンではまだ試していません。ただし (おそらく edac-utils をインストールした後ですが、残念ながら基本的に両方同時に行いました)、Linux はブート ログに次の内容を報告します (他のエントリが散在しています)。

[    4.867198] EDAC MC: Ver: 2.1.0
...
[    4.874374] MCE: In-kernel MCE decoding enabled.
[    4.875414] AMD64 EDAC driver v3.4.0
[    4.875438] EDAC amd64: DRAM ECC enabled.
...
[    4.875542] EDAC amd64: CS0: Unbuffered DDR3 RAM
[    4.875545] EDAC amd64: CS1: Unbuffered DDR3 RAM
[    4.875546] EDAC amd64: CS2: Unbuffered DDR3 RAM
[    4.875548] EDAC amd64: CS3: Unbuffered DDR3 RAM

これはかなり良い兆候です。手動で実行すると、/etc/init.d/edac restart同様のログ エントリは作成されません。数回前の再起動からの古いログを見ると、次のことがわかります。

[   13.886688] EDAC MC: Ver: 2.1.0
[   13.890389] MCE: In-kernel MCE decoding enabled.
[   13.891082] AMD64 EDAC driver v3.4.0
[   13.891107] EDAC amd64: DRAM ECC disabled.
[   13.891116] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.
[   13.891117]  Either enable ECC checking or force module loading by setting 'ecc_enable_override'.
[   13.891118]  (Note that use of the override may cause unknown side effects.)

dmidecode --type memoryまた、2つの非常に強力な指標も示しています。物理メモリアレイの「エラー訂正タイプ」プロパティ(ただし、何らかの理由で非ECC RAMでも同じ結果が出た、これはメモリの機能ではなくマザーボードのサポートに関連している可能性があります。

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC

各メモリデバイスの合計幅とデータ幅(追加ビットは ECC に使用されるビットです)は次のとおりです。

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0026
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits

答え2

サーバー/PC へのコンソール アクセスがあり、再起動できる場合は、これを行う非常にシンプルで効果的な方法があります。メモリテスト86+

この気の利いたツールは、メモリが ECC 対応かどうかを簡単に表示します。また、実際のテストを行うときに ECC 検証も実行されると思います。

以下は(少し古いですが)スクリーンショットです。 ここに画像の説明を入力してください

答え3

実際のハードウェアでの経験をまとめてみようと思います。私は M5A ボードを持っていませんが、AMD チップセットを搭載した M4A ボードを 2 つ持っています。

午前3

いくつかのポイント:

  • M4A8xx マザーボードは ECC を正式にサポートしています。
  • AMD Phenom II および Athlon II は ECC をサポートしています。(他のものも動作する可能性があります)
  • AMD Phenom チップは、モジュール「edac_mce_amd」を通じてエラー報告をサポートします。このモジュールは ECC なしで動作し、CPU に関連するキャッシュ エラーやその他のエラーを報告します。
  • RAM ECC は「amd64_edac」を通じてサポートされます。

この時点で、私は M4A ボードを ECC RAM で 2 年以上実行していますが、エラーは報告されていません。一部のボードは、修正可能なエラー (CE) を報告しないようです。ECC なしで不安定なタイミングを設定し、その後有効にして動作を確認することをお勧めします。Memtest86 を使用することもできますが、このソフトウェアは ECC イベントを報告せず、ECC が有効になって RAM が安定していることを示すだけです。カーネル自体は、'mce' ブート パラメータに渡されるカーネル パラメータに関係なく、詳細のないメッセージのみを表示します。

[Hardware error] Machine Check Exception

これらは、/sys の 'edac' エントリにも考慮されません。テストの結果、これらは修正されたエラーになりますが、修正不可能なエラーをどのように処理するかはわかりません。

これらの ASUS ボードは、CPU エラーに関連するエラーも報告していないようです。私がこの機能に初めて気づいたのは、破損した ASRock ボードがロックし始めたときでしたが、UE が原因で OS に報告されました。互換性のあるボードでは、これらは次の形式でカーネル メッセージに表示されます。

[Hardware error] Machine Check Excpetion logged
[Hardware error] ERROR DETAILS, ETC, ETC

これらは MCE ログに記録されませんが、カーネルによって特別に処理されます。(edac_mce_amd モジュール) これは、バッファ内にある場合や、メモリが破損するプロセスを強制終了するなどの別のオプションがある場合に、修正されていないエラーを破棄できるため便利です。

これらのASUSボードでは、CPUエラー報告動かないこれは非常に悪いことです。PSU またはマザーボードの VRM が損傷してエラーが発生し始めると、データが破損する可能性があるためです。CPU の安定性を定期的にテストしない限り、これを使用しないでください。

午前4

ASUS AM4 ボードでは、以前のバージョンは AM3 として動作しますが、メモリ エラー レポートは正常に動作していました。/sys を読み取ってエラー数を取得したり、カーネル ログを確認したりできました。現在の BIOS では、RAS デーモンをインストールし、'ras-mc-ctl' コマンドを使用してエラー数を読み取る必要があります。

これらのプラットフォームでの CPU エラーの報告と処理はテストしていません。

関連情報