web-dev-qa-db-ja.com

ECC登録済みvsバッファなしECC

常時稼働する(GNU/LinuxまたはFreeBSDベースの)ストレージサーバーを構築したいと思います。データの破損を防ぐために(このような問題が発生したことがないため発生する可能性は低いですが、申し訳ありませんが安全です)、ECC RAMを使用します。

EDD(?)(これははるかに高価です)ほど良くなく、追加の保護を提供します。 ECCはシングルビットエラーのみを訂正するようです。

ECC登録済みRAMは、Intel XeonまたはAMD interlagos/magny-cours/valencia g34またはc32などのワークステーション/サーバーボードでのみ使用できます。

ECCアンバッファードは、AsusボードのIntel Xeon lga1155またはAMD AM3 +で使用できます。

2番目のオプションは、プロセッサとマザーボード側ではるかに安くなり、16 GB以上のRAM(バッファなしの4x4 GB ECCは、最も手頃な価格のスティックです)が必要になると思います)。

私が持っている疑問は(主にasus am3 +ボードに関するものです):ECCバッファなしRAM ECC登録済みRAM(安全性と信頼性の観点から)?それとも悪い選択でしょうか?私はスピードをあまり気にしません。

詳細:サーバーは最大24 x 3.5インチドライブのサーバーケースを使用し、消費量を可能な限り少なくする必要があります。その意味では、LGA1155は2倍の価格で他のデバイス(TW〜20-95W)よりも優れている(> 80W)ようです。どんな提案でも大歓迎です。アイドル状態で120W未満としましょう(24台中10台のハードディスクで)。

15
user51166

ECCはシングルビットエラーのみを訂正するようです。

正しい。より多くのエラーを修正するには、より多くのビットが必要になります。現状では、8ビットの情報を保存するためにすでに10ビットを使用しており、メモリチップの20%を「無駄」にして、1ビットの訂正と最大2ビットのエラー検出を可能にします。

次のように動作します。 0または1を想像してみてください。どちらかを読んだら、私は正しいことを読んでほしいと願うだけです。宇宙線または不良チップによって0が1に反転した場合、私にはわかりません。

過去には、それを平等に解決しようとしました。パリティは、格納されている8ビットごとに9番目のビットを追加していました。バイトに含まれるゼロの数と1の数を確認しました。 9番目は、それを偶数にするために設定されました。 (偶数パリティの場合)バイトを読み取り、その数が間違っていた場合、何かが間違っていることがわかりました。どのビットが間違っていたかはわかりません。

その上でECCが拡張されました。 10ビットと複雑なアルゴリズムを使用して、単一ビットが反転したことを検出します。また、元の値が何であったかを知っています。それがどのように行われるかを説明する非常に簡単な方法は次のとおりです:

すべての0sを000に置き換えます。すべての1sを111に置き換えます。

これで、6つの組み合わせを読み取ることができます。
000
001
010
100
101
111

何が最初に保存されたかは、100%確実ではありません。 000を読み取った場合、それは予想していた000であったか、3つのビットすべてが反転した可能性があります。後者はほとんどありません。それは起こりますが、ビットはランダムにフリップしません。いくつかの簡単な計算では10回に1回発生するとします(現実ははるかに少ないです)。これは、正しい値を読み取る次の可能性につながります。

000-> 000(99.9%確実)またはトリプルフリップ(1/1000チャンス)

001->問題が発生していることがわかっています。しかし、それは000で1ビットが反転した(1:10の確率)、または111で2ビットが反転した(1:100のチャンス)のいずれかです。したがって、000を読み取ったかのように扱い、エラーをログに記録します。

010->上記と同じ。

100->上記と同じ。

011->上記と同じですが、111であると想定しています

101->上記と同じですが、111であると想定しています

110->上記と同じですが、111であると想定しています

111-> 111(99.9%確実)またはトリプルフリップ(1/1000チャンス)

111-> 000(99.9%確実)またはトリプルフリップ(1/1000チャンス)

ECCは同様のトリックを実行しますが、より効率的です。 8ビット(1バイト)の場合、検出と修正に10ビットのみを使用します。


ECC登録済みRAMは、ワークステーション/サーバーボードでのみ使用できます。バッファなしのECCは、Asusボード上のIntel Xeon lga1155またはAMD AM3 +で使用できます。

ECC部分が何であるかについてはすでに説明しましたが、現在は登録済み部分とバッファーなし部分です。

最近のCPUでは、メモリコントローラーはCPUダイ上にあり、AMD Opteronチップではずっと前から、IntelではCore iシリーズで始まっています。ほとんどのデスクトップCPUは、RAMを保持するDIMMソケットと直接通信します。それは機能し、追加のロジックは必要ありません。これは安価に構築でき、メモリコントローラからRAMへの遅延がないため、高速です。

しかし、メモリコントローラは高速で限られた電流しか駆動できません。つまり、マザーボードに追加できるメモリソケットの数には制限があります。 (そして、それをより複雑にするために、DIMMが使用できる量になり、これはメモリランクにつながります。これはすでに長いので、スキップします)。

サーバーボードでは、デスクトップシステムよりも多くのメモリを使用することがよくあります。したがって、「レジスタ」バッファがメモリに追加されます。 DIMM上のチップからの読み取りは、最初にこのバッファーにコピーされます。クロックサイクル後、このバッファーはメモリコントローラーに接続してデータを転送します。

このバッファー/レジスターは遅延を引き起こし、メモリーを遅くします。これは望ましくないため、多くのメモリバンクを持つボードでのみ使用/必要です。ほとんどのコンシューマボードはこれを必要とせず、ほとんどのコンシューマCPUはこれをサポートしていません。

直接接続され、バッファリングされていないRAMとバッファリング/登録されているRAMは、一方が他方よりも優れている、または悪い場合ではありません。メモリスロットの数に関しては、異なるトレードオフがあります。登録されたRAMは、ある程度の速度(および場合によっては費用)を犠牲にしてRAMを増やすことができます。可能な限り多くのメモリを必要とするほとんどの場合、その余分なメモリはRAMがわずかに遅い速度で動作することを補償する以上のものです。

私が持っている疑問は(主にasus am3 +ボードに関する):(安全性と信頼性の観点から)ECCバッファなしRAMはECC登録RAMと同じくらい良いですか?またはそれは悪い選択です。スピードはあまり気にしません。**

安全性と安定性の観点から、ECC-unbufferedとECC-registeredは同じです。


詳細:サーバーは最大24 x 3½ ''ドライブのサーバーケースを使用し、消費量をできるだけ少なくする必要があります。

24台のドライブが大量の電力を消費します。どのくらいドライブに依存します。私の140GB 15K RPM SASドライブは、1T​​B SATA 7k2ディスクと同じように、アイドル時にわずか10ワットを消費しています。使用時には、両方をさらに引きます。

これを24倍します。アイドル時の24x10ワットは、ディスクのプラッターを回転させたまま240ワットを意味し、空気抵抗を克服します。使用中はそれを二重にしてください。


その意味では、LGA1155は2倍の価格で他のデバイス(TW〜20-95W)よりも優れている(> 80W)ようです。

Intelは、執筆時およびあなたが言及したCPUに対して、低電力CPUが優れています。

どんな提案でも大歓迎です。アイドル状態で120W未満としましょう(24台中10台のハードディスクで)。

FreeBSDに行くなら、ZFSをよく見てください。それは素晴らしいことです。より高度な機能の多く(重複排除や圧縮など)は、深刻なCPUパワーを使用し、十分なメモリを必要とします。 ZRAIDで基本的に使用するZFSは、前述のCPUセットと16 GBの両方で問題なく動作しますが、重複排除などの機能をオンにする場合は、ディスク容量に必要な推奨メモリを注意深く検討する必要があります。ストレージのTBあたり最大5GBを推奨 一部のガイド

さらに2つ:

  1. ドライブの接続については何もわかりませんでした。一部のボードでは、最大10個のSATAポートが使用できます。しかし、それ以上のものについては、アドインカードが必要になります。ハードウェアRAIDを検討する場合は、最初から計画するのが最善です。
  2. ドライブ障害: SATAポートマルチプライヤー を使用する場合は、SATAドライブに障害が発生した場合の動作を注意深く確認してください。それはしばしばきれいではありません。家庭のセットアップでは大きな問題ではありませんが、エンタープライズグレードではほとんど問題ありません。個々のドライブがエラーを処理する方法も考慮する必要がある場合があります。一部のドライブが「NAS」または「RAID」の使用を目的としてラベル付けされている理由は、通常のドライブとは異なる方法でエラーを処理するためです。 RAIDがない場合は、ドライブをできるだけ多く再試行する必要があります。 RAIDを使用すると、 ドライブをすばやく故障させたい なので、別のコピーから読み取ることができます。
46
Hennes

2つの別々の問題。

ECCと非ECC

  • アップタイムが重要な場合は常にECCを使用する
  • もっとコストがかかる-8チップではなく9チップ(の倍数)が必要
  • マザーボードはそれを使用するためにそれをサポートする必要があります

登録済み対バッファリングなし:

  • より多くの(=)より多くの合計を持つことができますRAM Registered DIMMでインストールされます
    • メモリコントローラーインターフェイスの電気的ひずみが少ない
  • ただし、取り付けられているすべてのDIMMは登録されている必要があります
    • registeredにアップグレードする場合は、バッファなしのDIMMを取り外す必要があります
  • また、コストが高く、サイクルのアクセスが遅くなります
    • バッファリングされていない場合は、レイテンシがわずかに低くなります(重要な場合)。
    • とにかく、すべてのランダムアクセスには多くのサイクルがかかります
    • 絶対アクセス遅延(ナノ秒単位の時間)は、PCでのDRAMの使用履歴と比べてそれほど改善されていないことに注意してください
      • 代わりに大幅に改善されたコスト、容量、帯域幅
      • とにかく、メモリキャッシュはほとんどのメモリアクセスのレイテンシを隠します
    • レイテンシが長くなると、シングルスレッドの「リアルタイム」のパフォーマンスが最も低下します
      • 通常、「サーバー」の使用例にはあまり影響しません
    • 帯域幅と全体的なパフォーマンスの違いがない/最小限
      • 影響を受けない順次アクセス帯域幅
      • L2/L3キャッシュは、実際のアクセスパターンがほとんど一度にキャッシュ内の行を置換することを意味するため、通常はとにかく「バースト」アクセスです
1
RGD2