PFA(예측 오류 분석) 메모리 목록을 관리하는 방법

PFA(예측 오류 분석)에서 ECC(오류 수정 코드) 메모리 페이지가 현재 PFA 레지스트리 설정에 따라 실패할 가능성이 있다고 예측할 때마다 PFA는 메모리 페이지에 대한 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을 사용하여 레지스트리 데이터를 구문 분석하고 다음 스크립트를 사용하여 목록을 ouput할 수 있습니다.

$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 옵션을 참조하세요.

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 다시 시작하기 전에 명령 및 해당 결과를 신중하게 검토해야 합니다.