如何管理預測性失敗分析 (PFA) 記憶體清單

每當預測性失敗分析 (PFA) 預測 ECC () 記憶體頁面的錯誤修正碼可能會根據目前的 PFA 登錄設定失敗,PFA 會儲存 (或 保存) 記憶體頁面的 PFN) 頁碼 (PFN) 。

從 Windows 19042 版開始,不正確的記憶體分頁會儲存在 登錄底下 HKLM\SYSTEM\CurrentControlSet\Control\WHEA\BadPages 。 在舊版 Windows 中,此資訊會儲存在 BCD 系統存放區中。

此清單包含 PFA 預測的所有記憶體頁面可能失敗的 PFN。 當 Windows 啟動時,它會從系統使用中排除這些記憶體頁面。

注意

沒有將實體記憶體 PFN 對應至特定實體記憶體模組的業界標準。 因此,WHEA 無法提供哪些記憶體模組失敗的相關資訊。

更換失敗的系統記憶體時,系統管理員必須藉由更新登錄或使用 BCDEdit 命令列工具來手動清除此清單。 如果未清除清單,即使已取代失敗的記憶體模組,Windows 仍會繼續排除清單中的記憶體頁面。

此頁面描述如何從不正確的記憶體清單中檢視和清除頁面框架編號。 若要執行下列步驟,您需要提升許可權的命令提示字元:

  1. 按一下 [開始],指向 [所有程式],然後按一下 [ 配件]。
  2. 用滑鼠右鍵按一下 [命令提示字元],然後選取 [以系統管理員身分執行]。
  3. 如果顯示 [使用者帳戶控制] 對話方塊,請在對話方塊中按一下 [ ]。

在登錄中檢視頁面框架編號 (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 登錄機碼會包含封裝頁面的二進位 Blob,如下列範例所示:

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。