サーバーでのECC RAMの使用についての議論を見てきました。なぜそれが良いのですか?
ECC RAMは、パリティビットを利用することにより、ビット単位の小さなエラーから回復できます。サーバーは、稼働時間と信頼性が重要な共有リソースであるため、ECC RAM ECCは一般的にわずかな価格の違いでのみ使用されます。ECCRAMはCAD/CAMワークステーションでも使用されます。小さなビットエラーが原因で計算ミスが発生し、設計が製造に入るときにさらに重大な問題になる可能性がありました。
優れた実世界調査:
DRAM Errors in the Wild:A Large-Scale Field Study (pdf)
このペーパーでは、フィールドでのDRAMメモリエラーに関する最初の大規模な調査を提供します。これは、数百万DIMM日を構成する2年以上の期間にわたってGoogleのサーバー群から収集されたデータに基づいています。私たちの調査のDRAMは、複数のベンダー、DRAMの密度とテクノロジー(DDR1、DDR2、およびFBDIMM)をカバーしています。
このペーパーでは、次の質問を扱います。実際には、メモリエラーはどの程度一般的ですか。それらの統計的特性は何ですか?それらは、温度やシステム使用率などの外部要因の影響をどのように受けますか?また、チップ密度、メモリテクノロジー、DIMMの使用年数など、チップ固有の要因によってどのように異なりますか?
多くの点で、フィールドでのDRAMエラーの動作は、一般に想定されているものとは大きく異なります。たとえば、以前に報告されたものよりも桁違いに高いDRAMエラー率が観察され、FIT率(10億デバイス時間あたりの時間の障害)は1 Mbitあたり25,000から70,000であり、DIMMの8%以上が毎年影響を受けています。 メモリエラーがソフトエラーではなくハードエラーに支配されているという強力な証拠を提供します。これは、以前のほとんどの作業が焦点を当てています。フィールドでのDIMMのエラー動作に影響を与える要因である温度は、驚くほど小さな影響しか与えません。最後に、一般的に恐れられているのとは異なり、新しい世代のDIMMを使用すると、DIMMごとのエラー率が増加する兆候は見られません。
興味深いことに、ほとんどのメモリエラーはハードでした-ハードメモリエラーは回復不能です。つまり、メモリを物理的に故障として交換する必要があります一方で、ソフトメモリエラーは、正しい値。これは、ECCの価値がかなり限定されていることを示しています。
通常、メモリシステムで発生する可能性のあるエラーには2種類あります。 1つ目は、再現可能なエラーまたはハードエラーと呼ばれます。この状況では、ハードウェアの一部が壊れており、常に誤った結果を返します。たとえば、何が書き込まれても、常に「0」を返すようにビットがスタックしている場合があります。ハードエラーは通常、メモリモジュールの緩み、チップの切れ、マザーボードの欠陥、またはその他の物理的な問題を示しています。一貫性があり再現性があるため、診断と修正が比較的簡単です。
調査のすべてのサーバーがECCを使用しているように聞こえるので、ECCと非ECCエラー率を知ることはできません。
このペーパーでは、コモディティサーバーの大規模な艦隊におけるDRAMエラーの発生率と特性を調査しました。私たちの調査は2年以上にわたって収集されたデータに基づいており、複数のベンダー、世代、テクノロジー、および容量のDIMMをカバーしています。すべてのDIMMには、エラー訂正ロジック(ECC)が搭載されており、少なくともシングルビットエラーを訂正します。
ECCには、パリティに比べていくつかの利点があります。 1つは、システム全体を停止することなく、シングルビットエラーを検出して修復できることです。マルチビットエラーでもパリティエラーが返されますが、メモリ自体に欠陥がない限り、PCの寿命中はこの確率が天文学的に低いです。 ECCは自動車保険のようなものです。これは、問題が発生する可能性のある大部分の問題をカバーしますが、複数の車の積み重ねを防ぐことはできません。
詳細はこちら: ECCメモリ:デスクトップPCではなくサーバーに必須
物事を簡単にするために、 Wikipedia から引用します。
コンピュータシステム内部の電気的または磁気的な干渉により、DRAMの1ビットが自発的に反対の状態にフリップする可能性があります。これは当初、チップパッケージ材料の汚染物質によって放出されるアルファ粒子が主な原因であると当初は考えられていましたが、研究[5]により、DRAMチップの1回限りの(「ソフト」)エラーの大部分はバックグラウンド放射の結果として発生することが示されています
...
この問題は、追加のメモリビットを含むDRAMモジュールと、これらのビットを利用するメモリコントローラを使用することで軽減できます。これらの余分なビットは、パリティの記録またはエラー修正コードの使用に使用されます