如何判斷RAM ECC是否運作?

如何判斷RAM ECC是否運作?

我計劃購買一些 ECC RAM 來替換我目前安裝在 Asus M5A97 Pro 主機板(AMD 970 晶片組、FX-6100 CPU)上的非 ECC RAM。

安裝 RAM 後,如何判斷RAM的ECC功能是否正常運作?

我考慮了dmidecode --type memory當前每個 RAM 棒的列印內容:

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits

(首先,我希望每位元組使用 1 位元 ECC,資料寬度仍為 64 位,但總寬度為讀取 72 位元。)

可以用來判斷ECC是否有效嗎?或者 dmidecode 等級太低了?我還能使用什麼(除了等待並查看日誌中是否顯示 ECC 錯誤,這表明它正在工作,但並不是說它不工作)?

更新:後來我想到了edac-utils。安裝它們,我明白了Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set。這給了我edac-utiledac-ctl可執行檔。其中之一可以用於此目的嗎?

答案1

看起來沒有萬無一失的方法可以告訴你,但是多種方法可以為您提供某種答案。顯然,您幾乎必須嘗試不同的方法,直到找到告訴您 ECC 正在工作的方法。

就我而言記憶體測試86+ 4.20無法被哄騙意識到它正在處理 ECC RAM;即使我將其配置為 ECC On,它仍然ECC: Disabled在 IMC 線路上報告。我還沒有嘗試過新版本。然而(可能是在安裝 edac-utils 之後,不幸的是我基本上同時完成了這兩個操作),Linux 在啟動日誌中報告(散佈著一些其他條目):

[    4.867198] EDAC MC: Ver: 2.1.0
...
[    4.874374] MCE: In-kernel MCE decoding enabled.
[    4.875414] AMD64 EDAC driver v3.4.0
[    4.875438] EDAC amd64: DRAM ECC enabled.
...
[    4.875542] EDAC amd64: CS0: Unbuffered DDR3 RAM
[    4.875545] EDAC amd64: CS1: Unbuffered DDR3 RAM
[    4.875546] EDAC amd64: CS2: Unbuffered DDR3 RAM
[    4.875548] EDAC amd64: CS3: Unbuffered DDR3 RAM

這是一個很好的跡象。手動執行/etc/init.d/edac restart不會建立類似的日誌條目,並且查看幾次重新啟動前的舊日誌,我看到:

[   13.886688] EDAC MC: Ver: 2.1.0
[   13.890389] MCE: In-kernel MCE decoding enabled.
[   13.891082] AMD64 EDAC driver v3.4.0
[   13.891107] EDAC amd64: DRAM ECC disabled.
[   13.891116] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.
[   13.891117]  Either enable ECC checking or force module loading by setting 'ecc_enable_override'.
[   13.891118]  (Note that use of the override may cause unknown side effects.)

dmidecode --type memory也給出了兩個非常強烈的指示:物理記憶體陣列的「糾錯類型」屬性(但由於某種原因在非 ECC RAM 上顯示相同,所以這可能與主機板的支援有關而不是與記憶體的功能有關),

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC

分別是每個儲存設備的總寬度和資料寬度(附加位元是用於 ECC 的位元):

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0026
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits

答案2

有一個非常簡單有效的方法可以做到這一點,前提是您可以透過控制台存取您的伺服器/PC 並可以重新啟動它:記憶體測試86+

這個漂亮的工具將快速顯示記憶體是否啟用了 ECC。我也相信在進行實際測試時它會執行 ECC 驗證。

這是一個(稍微過時的)螢幕截圖: 在此輸入影像描述

答案3

我將嘗試總結我在實際硬體上的經驗。我沒有 M5A 主機板,但有兩塊採用 AMD 晶片組的 M4A 主機板。

AM3

幾點:

  • M4A8xx主機板正式支援ECC。
  • AMD Phenom II 和 Athlon II 支援 ECC。 (其他人可能會工作)
  • AMD Phenom 晶片支援透過模組「edac_mce_amd」進行錯誤報告。此模組無需 ECC 即可運作,並報告快取或與 CPU 相關的其他錯誤。
  • RAM ECC 透過「amd64_edac」支援。

至此,我已經使用 ECC RAM 運行 M4A 板 2 年多了,沒有看到任何錯誤報告。有些主機板似乎沒有報告可糾正錯誤(CE)。我建議您設定不含 ECC 的不穩定時序,然後啟用它以檢查其是否正常運作。您可以使用 Memtest86,但軟體不會報告 ECC 事件,它只會顯示 RAM 現在在啟用 ECC 的情況下穩定。無論將什麼核心參數傳遞給「mce」啟動參數,核心本身只顯示沒有詳細資訊的訊息:

[Hardware error] Machine Check Exception

這些也不會被記錄在 /sys 中的「edac」條目中。從測試來看,這些錯誤將被修正,但我不知道它將如何處理不可糾正的錯誤。

這些華碩主機板似乎也沒有報告任何與 CPU 錯誤相關的錯誤。當損壞的華擎主機板開始鎖定但由於 UE 向作業系統報告時,我第一次意識到此功能。在相容板上,這些資訊以以下格式顯示在核心訊息上:

[Hardware error] Machine Check Excpetion logged
[Hardware error] ERROR DETAILS, ETC, ETC

這些不會記錄在 MCE 日誌中,而是由核心專門處理。 (edac_mce_amd 模組)這很有用,因為如果在緩衝區中或使用其他選項(例如殺死會損壞記憶體的進程),則可以丟棄未更正的錯誤。

在這些華碩主機板上,CPU 錯誤報告不管用。這是非常糟糕的,因為如果 PSU 或主機板 VRM 損壞並開始產生錯誤,您可能會損壞一些資料。如果不定期測試 CPU 穩定性,我不會使用它。

AM4

在華碩 AM4 主機板上,先前的版本可以像 AM3 一樣運作,但記憶體錯誤報告正常運作 - 您可以讀取 /sys 並取得錯誤計數,或查看核心日誌。在目前的 BIOS 上,您必須安裝 RAS Daemon 並使用“ras-mc-ctl”命令來讀取錯誤計數。

我尚未在這些平台上測試 CPU 錯誤報告和處理。

相關內容