プロセッサを交換してからこの投稿を更新しましたが、私の質問の核心(そして残念ながら結果も)は同じです。
最初のFreeNASボックスを構築し、ECCを使用したいと思いましたRAM重要なデータを保存したいので。予算が足りないので、ECCをサポートする最も手頃なソリューションを探していました羊。
調査したところ、マザーボード、メモリ、ECCをサポートするCPUが必要であることがわかりました。私が選んだマザーボードは、C232チップセット、DDR4、LGA1151ソケットを備えた「Gigabyte X150M-Pro ECC」です。
モデル番号「KVR21E15S8K2/8」のキングストン製の2枚のDIMMのキットも購入しました( スペックシート )。ギガバイトがテスト済みメモリモジュールのリストを公開し、私のモジュールは動作中のECCでサポートされているようです( サポートされているモジュールのリスト )。
予算が足りないので、ECCをサポートする手頃な価格のSkylake CPUが必要でした。 Intel によると、Celeron G3900はECCをサポートしているので、ECCを使用しました。
コンピュータを構築した後、システムが本当にECCメモリで実行されており、マザーボードのBIOSに入っていることを確認したいと思いました。さまざまなインターネットサイトから、一部のマザーボードには 特別なセクション があり、ECCが機能しているかどうかを確認できるはずですが、私のマザーボードにはそれがないようです。すべてのメニューを確認したところ、類似のセクションが見つかりませんでした。
さらに調査を行ったところ、Unix&Linuxのスタック交換で post が見つかったため、問題が解決しませんでした。最新のmemtest86+
を試してみましたが、このことから、「ECC」という値も表示されません。以前の4.20バージョンを試してみました Pugetシステムが使用したもの で、「ECC:オフ」と表示されました。しかし、前述の投稿を読んだ後、それが真実を物語っているとは思えません(たぶんそれが機能が削除された理由ですか?)。どちらのバージョンもDIMMの正しい速度とレイテンシを読み取れなかったため、memtest86+
に対する疑問が深まります。
ECCが機能しているかどうかを確認するもう1つの一般的な方法は、dmidecode -t memory
コマンドを発行してTotal Width
およびData Width
を読み取ることでした。結果はそれぞれ128 Bits
と64 Bits
でした。出力の一部には、Error Correction Type: Single-bit ECC
というキーと値のペアを持つメモリ配列に関する詳細が表示されました。
72 bits
にはTotal Width
が必要だったので、デュアルチャネルに関連している可能性があると考え、メモリモジュールを2つの隣接するスロットに移動しましたが、デュアルチャネルが使用できないため、結果は同じでした。これがdmidecode -t memory
の- 完全な出力 です。
Pugetシステムが公開した興味深い C-program も試してみましたが、結果は0
であり、ECCサポートがないことを示しています。
今、私はIntel自身のウェブサイト上のデータが正しいことと私のCPUが実際にECCをサポートしていないことに疑問を感じ始めています。メモリとマザーボードの両方が特に「ECC」でブランド化されているので、それらを除外できます。
BIOSバージョンにECCを有効にするための更新が必要(現在は何もない)か、ECCが実際にすでに機能していて、確認できなかった可能性はありますか?あるいは、ECCメモリを実行したいのにIntelのWebサイトが間違っている、または誤解を招く場合、CPUの選択は間違っていますか?
私のCPUが間違った選択であることが判明した場合、「予算ECC CPU」の次の最良の選択は何でしょうか?
UPDATE:いくつかの 新しい表示 が表示されました。ECCが有効でdmidecode
ツールは奇妙なデータを報告するだけです。 FreeNASフォーラムでは、ユーザーDusanがサーバーグレードのハードウェア(SuperMicro MB、Xeon CPU、Kingston DIMM)を使用しており、128 Bits
で同様の出力が得られます。しかし、彼はそれが実際に機能するかどうか、自分自身はわからないことを書いた。
UPDATE 2:yagmoth555が 彼の回答 でこの質問に言及しているように、私のマザーボードはXeonプロセッサでのECCしかサポートしていないようです。私はそのメモはコピーされた以前のマニュアルからの遺物であると思ったが。 Xeonプロセッサを調べる必要があることを意味していると思います。:-/
更新3:Xeon E3-1220v5を購入しました。もちろん、ECCをサポートしており、マニュアルの要件を満たす必要があります。すべてのテストを再度実行してECC機能をチェックしましたが、結果は基本的に同じです。
Puget Systemsのコメントから、ecc_check.c
プログラムがXeonおよびCore i7プロセッサで動作しないようです。:-/
今回はmemtest86+
をもう少しチェックアウトしましたが、間違った速度とタイミングだけでなく、インストールされているDDR4の代わりにDDR3も報告するため、DDR4またはC232チップセットをまったくサポートしていないことは間違いありません。ただし、プロセッサは問題なく検出されましたが、memtest86+
の両方のバージョンで同じ最終結果が得られました。
バージョン4.20でもプロセッサが正しく検出されません。
他にどのようにECCをテストできるかについてのアイデアは、非常に高く評価されています。
今日、PassMarkからmemtest86
の- 商用バージョン (+
なし)があり、ありがたいことに、ECCチェックが含まれている無料バージョンも提供されていることがわかりました。
さらに、DDR4およびmemtest86+
の他のすべての機能もサポートします。
私の結果はECCサポートにプラスの影響を与えているようです。dmidecode
のような「従来の」ツールで同じ結果を得たいと思っていたとしても、これを完了と呼びます。
誰かが後でこの投稿に遭遇し、さらに検証とテストが必要な場合は、ECC機能を実際にテストするためのECCエラー挿入をサポートする有料バージョンも提供しています。
編集済み:マザーボードのマニュアルからの悪い新......:
BSD/linuxを実行しているようです。OS内で実行してください。 ( FreeNAS で利用可能)
dmidecode -t 17
次のような出力が得られます。
dmidecode 2.12 SMBIOS 2.5 present.
Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2
Total Width:72 bitsは、探している部分です。
Windowsシステムで実行できます
wmic MEMORYCHIP get DataWidth,TotalWidth
// ECCメモリDataWidth TotalWidth 64 72
// ECC以外のメモリDataWidth TotalWidth 64 64
FreeBSDとWindowsの回答は there から取得しました
Ryzen 7プロセッサーを使用した場合、上記のツールはどれも私にとっては機能しませんでした。ただし、最近の十分なLinuxカーネルでは、edac-utils、edac-ctl、edac-utilのツールは、ECCステータスや、修正されたエラーの数などを読み取ることができます。カーネルログには、dmesgの「EDAC」を含む行も含まれます。これにより、いくつかの情報も提供されます。この機能は、RAMをオーバークロックしてエラーが報告されていることを確認することでさらにテストできます(十分に高くなっている場合)。これは、実際に機能することを確認できる程度の証拠です。ただし、これらのツールはエラーを報告するか、機能しません。つまり、ECCステータス情報の読み取りがサポートされていないことを意味します。ECCが機能していないことを証明する100%信頼できる方法はないようです...
サーバー以外のマザーボードとチップセットの場合、特定のAMDマザーボード(ASRockなど)とAMDチップセットのみがECCを提供します。
Intelの場合、サーバーXeonチップセットでのみECCを使用できるようにします。 IntelはデスクトップチップセットでECCを無効にします。