如何管理故障預測分析記憶清單
每當預測性故障分析(PFA)根據當前的 PFA 註冊表設定預測錯誤更正碼(ECC)記憶體頁面可能會失效時,PFA 會儲存(或 保存)該記憶體頁面的頁框號碼(PFN)。
從 Windows 19042 版開始,損壞的記憶體頁面會儲存在登錄檔的 HKLM\SYSTEM\CurrentControlSet\Control\WHEA\BadPages
之下。
在舊版 Windows 中,此資訊會儲存在開機設定資料 (BCD) 系統存放區中。
此清單包含 PFA 預測很可能失敗的所有記憶體頁面的 PFN。 當 Windows 啟動時,它會從系統使用中排除這些記憶體頁面。
注意
沒有將實體記憶體 PFN 對應至特定實體記憶體模組的業界標準。 因此,WHEA 無法提供哪些記憶體模組失敗的相關信息。
更換失敗的系統記憶體時,系統管理員必須藉由更新登錄或使用 BCDEdit 命令行工具來手動清除此清單。 如果未清除清單,即使已取代失敗的記憶體模組,Windows 仍會繼續排除清單中的記憶體頁面。
此頁面描述如何從損壞記憶體清單中檢視和清除頁框編號。 若要執行下列步驟,您需要具有管理員權限的命令提示字元:
- 選取 [開始],指向 [所有程式],然後選取 [附屬應用程式]。
- 以滑鼠右鍵按下 命令提示字元,然後選取 [以系統管理員身分執行] 。
- 如果顯示 [用戶帳戶控制] 對話框,請在對話框中選取 [是]。
在登錄檔中檢視頁框號(PFN)
若要在系統登錄中檢視目前的 PFN 清單,請從提升許可權的命令提示字元執行下列命令:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\WHEA" /v BadPages
如果預測 ECC 記憶體頁面不會失效,則來自 reg 命令的輸出會顯示如下範例所示:
C:\Windows\system32>reg query "HKLM\SYSTEM\CurrentControlSet\Control\WHEA" /v BadPages
ERROR: The system was unable to find the specified registry key or value.
如果預測 ECC 記憶體頁面可能會失敗,BadPages 登錄機碼會包含封裝這些頁面的二進位資料塊,如下列範例所示:
C:\Windows\system32>reg query "HKLM\SYSTEM\CurrentControlSet\Control\WHEA" /v BadPages
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WHEA
BadPages REG_BINARY 000000000000000058140280000000005C1B0280000000007C30038000000000E2BBFC8000000000AF52188000F00F00
您可以使用 PowerShell 來剖析登入資料,並使用下列文稿輸出清單:
$whea = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\WHEA"
$pages = $whea.BadPages
$idx = 0
while($idx -le $pages.Count) {
$slice = $pages[$idx..($idx+7)]
[array]::Reverse($slice)
$page = (($slice | foreach { $_.ToString("X2") }) -join "")
Write-Output $page
$idx = $idx + 8
}
從登錄清除 PFN
若要清除 BCD 系統存放區中的 PFN 清單,請使用下列命令:
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\WHEA" /v BadPages
注意 登錄的不當變更可能會防止 Windows 啟動。 因此,您必須在重新啟動 Windows 之前仔細檢閱命令及其結果。
在 BCD 系統存放區中檢視目前的 PFN 清單
您可以使用 BCDEdit 命令行工具來檢視和刪除 BCD 系統存放區中儲存的記憶體頁面清單。 如需您可以使用的選項清單,請參閱 BCDEdit Command-Line Options。
若要使用 BCDEdit 工具,您必須是電腦上的 Administrators 群組成員。
在提升權限的指令提示字元中,使用下列命令:
C:\Windows\system32>bcdedit /enum {badmemory}
如果沒有預測到 ECC 記憶體頁面會發生故障,BCDEdit 工具的輸出會如以下範例所示:
C:\Windows\system32>bcdedit /enum {badmemory}
RAM Defects
-----------
identifier {badmemory}
若預測 ECC 記憶體頁面即將失效,{badmemory} 物件將包含 badmemorylist 值。 此值包含 PFA 預測失敗之內存頁面的 PFN 清單,如下列範例所示:
C:\Windows\system32>bcdedit /enum {badmemory}
RAM Defects
-----------
identifier {badmemory}
badmemorylist 0xffe38
0x100f
從 BCD 系統存放區清除目前的 PFN 清單
若要清除 BCD 系統存放區中的 PFN 清單,請執行下列命令:
C:\Windows\system32>bcdedit /deletevalue {badmemory} badmemorylist
注意
BCD 系統存放區的不當變更可防止 Windows 啟動。 因此,您必須在重新啟動 Windows 之前仔細檢閱命令及其結果。