ECC 與非 ECC

ECC 與非 ECC

我想建立一個始終運行的儲存伺服器(基於GNU/Linux 或FreeBSD)。為了防止資料損壞(這不太可能發生,因為我從來沒有遇到過這樣的問題,但安全總比後悔好)我想使用 ECC RAM。

雖然不如 EDD(?)(更貴)並且提供額外的保護。 ECC 似乎只能修正單位錯誤。

ECC 註冊 RAM 僅可用於工作站/伺服器主機板,例如 Intel Xeon 或 AMD interlagos/magny-cours/valencia g34 或 c32。

無緩衝 ECC 可在華碩主機板上的 Intel Xeon lga1155 或 AMD AM3+ 上使用。

第二個選項在處理器和主機板方面要便宜得多,而且我懷疑我是否需要超過 16GB 的 RAM(4x4 GB ECC 無緩衝是最大的實惠棒)。

我的問題是(主要是關於華碩am3+主機板):ECC無緩衝RAM和ECC註冊RAM一樣好嗎(從安全性和可靠性的角度來看)?或者說這是一個更糟糕的選擇。我不太在意速度。

更多詳細資訊:伺服器將使用最多具有 24 個 3.5 吋驅動器的伺服器機箱,並且消耗應盡可能少。從這個意義上說,LGA1155 似乎是更好的選擇(TDP ~ 20-95W),與其他產品(>80W)相比,價格是後者的兩倍。歡迎任何建議。假設空閒時功耗低於 120W(~ 24 個硬碟中有 10 個)。

答案1

好吧,如果您只使用 16GB RAM(這不是伺服器 RAM 範圍),您就可以使用相當標準的任何桌面 RAM/系統。

如果只是儲存伺服器,甚至不需要那麼高的CPU效能。

就像你說的,選擇 Sandy Bridge,它會給你一個很酷、高性能和可靠的系統。

說到 16GB RAM 範圍,您不必擔心 ECC 問題。

答案2

ECC 似乎只能修正單位錯誤。

正確的。糾正更多的錯誤需要更多的比特。事實上,您已經使用 10 位元來儲存 8 位元訊息,「浪費」了 20% 的記憶體晶片來允許一位修正和最多兩位錯誤偵測。

其工作原理如下。想像一個0或一個1。如果我讀了其中任何一個,我只希望我讀到了正確的東西。如果某些宇宙輻射或壞晶片將 0 翻轉為 1,那麼我永遠不會知道。

過去我們試圖透過奇偶校驗來解決這個問題。奇偶校驗是每儲存 8 位元添加第九位元。我們檢查了該位元組中有多少個 0 和多少個 1。第九個將使其成為偶數。 (對於偶校驗)如果您讀取過一個位元組並且數字錯誤,那麼您就知道出了問題。但你不知道哪一點出了問題。

ECC 對此進行了擴展。它使用 10 位元和複雜的演算法來發現單一位元何時翻轉。它也知道原始值是多少。一個非常簡單的方法來解釋它是如何做到的:

將所有0s 替換為000.將所有1s 替換為111.

現在您可以讀取六種組合:
000
001
010
100
101
111

我們永遠無法 100% 確定最初儲存的內容是什麼。如果我們讀到的000話,這可能正是000我們所期望的,或者所有三個都可能翻轉。後者的可能性很小。位不會隨機翻轉,儘管確實會發生。假設對於一些簡單的計算來說,這種情況發生十分之一(現實情況要少得多)。計算出讀取正確值的機會如下:

000-> 要麼000(99.9% 確定),要麼三重翻轉(1/1000 機會)

001-> 我們知道出了問題。但它要么是 000並且一位被翻轉(1:10 的機會),要么是 111並且兩位被翻轉(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 位元(一個位元組),它們僅使用 10 位元來偵測和修正。


ECC 註冊 RAM 僅可用於工作站/伺服器主機板 ECC 無緩衝可在 Asus 主機板上的 Intel Xeon lga1155 或 AMD AM3+ 上使用。

我已經提到 ECC 部分是什麼,現在是註冊部分與非緩衝部分。

在現代 CPU 中,記憶體控制器位於 CPU 晶片上,早​​在 AMD Opteron 晶片上就開始使用,而英特爾的 Core i 系列則開始使用。然後,大多數桌上型電腦 CPU 直接與容納 RAM 的 DIMM 插槽通訊。它可以工作,不需要額外的邏輯。其建置成本低,而且速度高,因為從記憶體控制器到 RAM 沒有延遲。

但記憶體控制器只能高速驅動有限的電流。這意味著主機板上可以添加的記憶體插槽數量是有限的。 (更複雜的是 DIMM 可以使用多少內存,這會導致內存等級。我將跳過它,因為這已經很長了)。

在伺服器主機板上,您通常希望使用比桌面系統更多的記憶體。因此,在記憶體中新增了一個「暫存器」緩衝區。從 DIMM 上的晶片讀取的資料首先被複製到該緩衝區。一個時脈週期後,該緩衝區連接到記憶體控制器以傳輸資料。

這個緩衝區/暫存器會延遲事情,使記憶體變慢。這是不希望的,因此它僅在具有大量存儲體的板上使用/需要。大多數消費性主機板不需要此功能,而且大多數消費性 CPU 也不支援它。

直接連接的無緩衝 RAM 與緩衝/註冊 RAM 之間並不存在優劣之分。他們只是在可以擁有多少記憶體插槽方面有不同的權衡。註冊 RAM 允許使用更多 RAM,但會犧牲一定的速度(並且可能會產生費用)。在大多數情況下,您需要盡可能多的內存,額外的內存足以補償運行速度稍慢的 RAM。

我的問題是(主要是關於華碩am3+主機板):ECC無緩衝RAM和ECC註冊RAM一樣好嗎(從安全性和可靠性的角度來看)?或者說這是一個更糟糕的選擇。我不太關心速度。

從安全性和穩定性的角度來看,ECC-unbuffered和ECC-registered是相同的。


更多詳細資訊:伺服器將使用具有最多 24 x 3 ½'' 驅動器的伺服器機箱,並且消耗應盡可能少。

24 個驅動器將消耗大量電力。多少取決於驅動器。我的 140GB 15K RPM SAS 硬碟在空閒時僅消耗 10 瓦,與 1TB SATA 7k2 磁碟相同。使用時兩者都繪製更多。

將其乘以 24。使用時要加倍。


從這個意義上說,LGA1155 似乎是更好的選擇(TDP ~ 20-95W),與其他產品(>80W)相比,價格是後者的兩倍。

在撰寫本文時以及您提到的 CPU 方面,英特爾在低功耗 CPU 方面表現更好。

歡迎任何建議。假設空閒時功耗低於 120W(~ 24 個硬碟中有 10 個)。

如果您選擇 FreeBSD,請仔細查看 ZFS。這可能很棒。它的許多更高級的功能(例如重複資料刪除和/或壓縮)需要大量的CPU 處理能力,並且需要大量的記憶體。用於 ZRAID 基本使用的 ZFS 在您提到的兩種 CPU 集和 16 GB 上都可以很好地工作,但如果您打開重複資料刪除等功能,您應該仔細查看磁碟容量所需的建議記憶體;建議每 TB 儲存空間最多 5GB一些指南

還有兩件事:

  1. 我沒有看到任何有關連接驅動器的信息。有些主機板可能有多達 10 個 SATA 連接埠。但對於除此之外的任何事情,您將需要附加卡片。如果您考慮硬體 RAID,那麼最好從一開始就進行規劃。
  2. 驅動器故障:您應該使用SATA 連接埠倍增器然後仔細觀察如果 SATA 驅動器出現故障,它們會如何反應。它通常並不漂亮。對於家庭設定來說不是一個大問題,但不是企業級的。您可能還需要考慮各個磁碟機如何處理錯誤。某些驅動器被標記為“NAS”或“RAID”用途的原因是它們處理錯誤的方式與常規驅動器不同。如果沒有 RAID,您希望驅動器盡可能重試。借助RAID,您希望驅動器快速失效,這樣您就可以從另一個副本中讀取。

答案3

兩個單獨的問題。

ECC 與非 ECC

  • 在正常運作時間很重要的地方使用 ECC
  • 成本更高——需要 9 個晶片(而不是 8 個)(的倍數)
  • 主機板必須支援才能使用

註冊與非緩衝:

  • 可以透過註冊 DIMM 安裝更多的 RAM 總量
    • 記憶體控制器介面上的電應力較小
  • 但所有安裝的 DIMM 都必須註冊或未註冊
    • 如果升級到寄存式,必須刪除無緩衝的 DIMM
  • 也更昂貴,而且訪問週期更慢
    • 如果這很重要的話,無緩衝的延遲會稍低一些
    • 無論如何,所有隨機存取都需要許多週期
    • 請注意,絕對存取延遲(以奈秒為單位的時間)在 PC 中使用 DRAM 的歷史上並沒有太大改善
      • 成本、容量和頻寬大大提高
      • 無論如何,記憶體快取隱藏了大多數記憶體存取的延遲
    • 較長的延遲對單執行緒「即時」效能的影響最大
      • 通常不會對「伺服器」用例產生太大影響
    • 頻寬和整體性能沒有/最小差異
      • 順序訪問頻寬不受影響
      • L2/L3 快取意味著實際存取模式主要是一次替換快取中的行,因此通常都是「突發」訪問

相關內容