Memory

如何檢查 RAM 是否在 ECC 模式下執行?

  • June 19, 2021

自從我更換了處理器後,我更新了這篇文章,但我的問題的核心(不幸的是結果也是如此)是相同的。


我建構了我的第一個 FreeNAS 盒子並想使用 ECC RAM,因為我想儲存關鍵數據。因為我的預算有限,所以我想選擇仍然支持 ECC RAM 的最實惠的解決方案。

經過一番研究,我發現我需要一塊支持 ECC 的主機板、記憶體和 CPU。我選擇的主機板是“Gigabyte X150M-Pro ECC”,它有 C232 晶片組、DDR4 和 LGA1151 插槽。

我還購買了由金士頓製造的兩個 DIMM 套件,型號為“KVR21E15S8K2/8”(規格表)。技嘉發布了一份經過測試的記憶體模組列表,我的模組似乎支持工作 ECC(支持的模組列表)。

記憶體標籤

由於預算有限,我需要一個支持 ECC 的經濟實惠的 Skylake CPU。根據英特爾的說法,賽揚 G3900 確實支持 ECC,所以我選擇了那個。

建構電腦後,我想驗證我的系統確實使用 ECC 記憶體執行並進入主機板的 BIOS。從各種網際網路站點,我發現一些主機板有一個特殊的部分,應該告訴 ECC 是否工作,但我的主機板似乎沒有。我檢查了所有菜單,但找不到類似的部分。

在做了更多的研究後,發現了一篇關於 Unix&Linux stackexchange 的文章並沒有解決我的問題。我嘗試了最新memtest86+的,據我所知,它甚至沒有顯示值“ECC”。我嘗試了Puget 系統使用的舊 4.20 版本,它顯示“ECC:關閉”。然而,在閱讀了前面提到的文章之後,我懷疑它是否說實話(也許這就是該功能被刪除的原因?)。兩個版本也沒有讀出 DIMM 的正確速度和延遲,這增加了我對memtest86+.

memtest86+截圖

另一種流行的確定 ECC 是否正常工作的方法是發出dmidecode -t memory命令並讀出Total Widthand Data Width。我的結果分別是128 Bits64 Bits。輸出的一部分顯示了有關具有鍵值對的記憶體陣列的詳細資訊Error Correction Type: Single-bit ECC

我期待72 bits的是Total Width,所以我認為它可能與雙通道有關,並將記憶體模組移動到兩個相鄰的插槽中,這應該防止雙通道,但結果是一樣的。這是完整的輸出dmidecode -t memory

我什至試用了 Puget 系統發布的有趣的C 程序,但結果是0,表明不支持 ECC。

現在我開始懷疑英特爾自己網站上的數據是否正確,而我的 CPU 實際上並不支持 ECC。記憶體和主機板都特別標有“ECC”,所以我可以排除這些。

BIOS 版本是否可能需要更新(目前沒有)才能啟用 ECC,或者 ECC 實際上已經在工作而我只是無法驗證它?或者如果我想執行 ECC 記憶體並且英特爾的網站是錯誤的/誤導性的,我對 CPU 的選擇是否錯誤?

如果我的 CPU 被證明是錯誤的選擇,那麼“預算 ECC CPU”的下一個最佳選擇是什麼?

**更新:**我看到一些新跡象表明我的系統實際上可能在啟用 ECC 的情況下執行,並且該dmidecode工具只報告奇怪的數據。在 FreeNAS 論壇上,使用者 Dusan 正在使用伺服器級硬體(SuperMicro MB、Xeon CPU、金士頓 DIMM),並且具有類似的輸出128 Bits。但他寫道,他不確定自己是否真的有效。

**更新 2:**正如 yagmoth555 在對這個問題的回答中提到的那樣,我的主機板似乎只支持帶有 Xeon 處理器的 ECC,儘管我認為該註釋是從以前的手冊中復製過來的。我想這意味著我需要研究 Xeon 處理器.. :-/


**更新 3:**我現在購買了 Xeon E3-1220v5,它當然支持 ECC,應該滿足手冊的要求。我再次執行所有測試以檢查 ECC 功能,結果基本相同:

ecc_check 和 dmidecode

從 Puget Systems 的評論來看,該ecc_check.c程序似乎也不適用於 Xeon 和 Core i7 處理器.. :-/

memtest86+這次我又檢查了一些,我相當肯定它根本不支持 DDR4 或 C232 晶片組,因為它不僅報告錯誤的速度和時序,而且報告 DDR3 而不是安裝的 DDR4。但是,它檢測到處理器就好了,但是我仍然得到了兩個版本的相同最終結果memtest86+

記憶體測試86 + v5.01

4.20 版甚至沒有正確檢測到我的處理器..

記憶體測試86 + v4.20

任何關於我如何測試 ECC 的想法都非常感謝。

今天我發現 PassMark 有一個商業版本memtest86沒有+),它也提供了一個免費版本,幸好包括 ECC-Checks。

此外,它還支持 DDR4 和memtest86+.

我的結果似乎對 ECC 支持是積極的,所以我將其稱為完成,即使我希望使用“傳統”工具(如dmidecode.

memtest86 結果


如果有人在以後偶然發現這篇文章並需要進一步驗證和測試,他們還提供支持 ECC 錯誤注入的付費版本,用於實際測試 ECC 功能。

引用自:https://serverfault.com/questions/810314