Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

Windows 10/11에서 Microsoft-Windows-Perflib 이벤트 오류 1020·1008을 수정하는 5가지 방법

Windows 10과 11은 수많은 하위 시스템이 유기적으로 연동되면서 직관적이고 강력한 컴퓨팅 환경을 제공합니다. 그러나 일부 사용자들은 최근 Windows 10/11에서 Microsoft-Windows-Perflib 이벤트 오류 1020 및 1008이 발생해 해당 애플리케이션 실행에 장애가 생기거나 전반적인 시스템 성능이 저하된다고 보고하고 있습니다.

흥미로운 점은 이 오류가 특별한 징후 없이 갑자기 나타난다는 것입니다. 오류 발생 전에 시스템이 멈추거나 앱이 충돌하는 등의 전조 증상이 거의 없어, 이벤트 뷰어를 직접 열어보기 전까지는 문제가 있다는 사실 자체를 인지하지 못하는 경우가 많습니다.

게다가 이 오류에 대한 온라인 자료가 많지 않아 많은 사용자들이 어떻게 대처해야 할지 몰라 답답함을 호소하고 있습니다. 갑자기 이 오류를 마주했는데 무엇부터 해야 할지 모르겠다면, 아래 가이드가 큰 도움이 될 것입니다.

Microsoft-Windows-Perflib 이벤트 오류 1020 및 1008이란?

먼저 혼동하지 말아야 할 부분이 있습니다. 이벤트 오류 1020과 1008은 서로 다른 두 개의 오류이지만, 대부분 동시에 발생하며 발생 상황 역시 거의 동일합니다.

이벤트 오류 1008의 경우 다음과 같은 메시지가 표시될 수 있습니다.

원본: Perflib
범주: 없음
유형: 오류
이벤트 ID: 1008

“DLL ‘C:\WINDOWS\system32\mscoree.dll’에 있는 서비스 ‘.NETFramework’의 open 프로시저가 오류 코드와 함께 실패했습니다. 지정된 파일을 시스템에서 찾을 수 없습니다. 이 서비스의 성능 데이터를 사용할 수 없습니다.”

이벤트 오류 1020의 경우에는 다음과 같습니다.

원본: Perflib
범주: 없음
유형: 오류
이벤트 ID: 1020

“확장 가능 카운터 DLL ‘C:\Windows\System32\perfts.dll’의 collect 함수로 전달된 버퍼 크기보다 필요한 버퍼 크기가 더 큽니다. 보고된 버퍼 크기는 34184였으며 필요한 크기는 43160이었습니다.”

이러한 오류는 mscoree.dll뿐 아니라 다른 DLL 파일에서도 발생할 수 있으며, 다른 DLL에 대해 성능 검사를 수행하는 과정에서도 나타날 수 있습니다.

위 예시는 시스템이 mscoree.dll을 찾지 못한다는 의미입니다. 실제로 한 사용자는 관리자 권한 PowerShell에서 lodctr /r 명령으로 파일을 복구하려 했고, mscoree.dll이 백업본으로 교체되었다는 메시지를 확인했습니다. lodctr /q 명령으로 복구 목록을 조회했을 때 mscoree.dll이 목록에 포함되어 있었지만, 그럼에도 불구하고 오류는 계속해서 나타났습니다.

영향을 받은 사용자들의 공통적인 반응은 “이벤트 뷰어에 오류가 기록될 뿐, 컴퓨터 자체에는 이상이 없다”는 것이었습니다. 모든 프로그램이 정상적으로 작동했기 때문에 무엇이 원인인지 파악하기가 더욱 어려웠습니다.

다행히 이 오류 자체는 심각한 문제가 아닙니다. Windows가 “성능 데이터를 수집할 수 없다”고 알려주는 일종의 알림일 뿐입니다. 문제 자체는 가볍지만, 이 알림을 없애는 과정은 조금 더 손이 갑니다.

오류의 주요 원인

이 이벤트 오류는 다양한 애플리케이션에서 발생할 수 있습니다. 성능 모니터가 처음으로 모든 카운터를 읽을 때 확장(Extension)의 Open 프로시저가 호출됩니다.

Open 프로시저의 일반적인 작업 중 하나는 레지스트리에서 자신이 지원하는 개체 인덱스 범위를 읽는 것입니다. 이 인덱스 값들은 애플리케이션의 성능 키 아래에 있는 First Counter, First Help, Last Counter, Last Help 레지스트리 값에 저장됩니다.

이 Open 프로시저가 데이터를 읽지 못하면(예: 해당 항목이 존재하지 않거나 프로그램 제거 과정에서 삭제된 경우) 이벤트 로그에 1008 또는 1020 이벤트가 기록됩니다.

정리하면, 오류 1020과 1008은 주로 카운터 목록이 손상되었거나 필요한 DLL이 비활성화된 경우 발생합니다. 성능 카운터가 특정 서비스의 문자열을 언로드하지 못하면 레지스트리가 손상되어 이러한 Perflib 오류가 표시될 수 있습니다.

이벤트 오류 1020 및 1008 해결 방법

이 오류가 Windows 시스템에 치명적이지는 않지만, 반복적인 알림은 분명 불편합니다. 아래 해결 방법을 순서대로 시도해 보세요.

방법 1: 컴퓨터 재시작

모든 오류 해결의 첫걸음은 시스템 재시작입니다. 재시작만으로 일시적인 시스템 결함이 해결되는 경우가 많습니다. 전원 버튼을 눌러 종료한 후 몇 분 정도 기다렸다가 다시 켜세요. 또한 안전 모드로 부팅해 오류가 서드파티 소프트웨어와 관련이 있는지 확인해 볼 수도 있습니다.

방법 2: 손상된 시스템 파일 복구(SFC 검사)

명령 프롬프트에서 SFC(System File Checker) 명령을 실행해 손상된 시스템 파일을 검사하는 것도 기본적인 문제 해결 단계입니다. 이 도구는 손상된 파일을 자동으로 복구하거나 교체하여 다양한 오류를 해결해 줍니다. 관리자 권한으로 명령 프롬프트를 연 뒤 sfc /scannow를 입력하고 Enter 키를 누르면 됩니다. 추가로 Outbyte PC Repair 같은 PC 최적화 도구로 잘못된 설정과 불필요한 파일을 정리하면 유사한 오류의 재발을 예방하는 데 도움이 됩니다.

방법 3: 레지스트리 편집

고립된(orphaned) 레지스트리 항목을 제거하려면 다음 단계를 따르세요.

  1. 레지스트리 편집기(Regedit.exe)를 실행합니다.
  2. 다음 하위 키로 이동합니다.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<서비스 이름>\Performance
  3. “Open” 값을 삭제합니다.
  4. 변경 사항을 적용하기 위해 컴퓨터를 재시작합니다.

방법 4: 성능 카운터 다시 빌드

문제를 해결하려면 성능 카운터 목록을 다시 빌드해야 합니다. 이 절차는 로컬 관리자 그룹의 구성원 권한이 필요합니다.

  1. 시작 버튼을 클릭합니다.
  2. 검색창에 CMD 또는 명령 프롬프트를 입력합니다.
  3. 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택합니다.
  4. 명령 프롬프트 창에 다음을 입력하고 Enter 키를 누릅니다.
    cd %SYSTEMROOT%\System32
  5. 이어서 다음 명령을 입력하고 Enter 키를 누릅니다.
    lodctr /r

이렇게 하면 레지스트리의 카운터 목록이 새로 생성되어 손상된 카운터 정보가 복구됩니다.

방법 5: 비활성화된 DLL 다시 활성화

오류 1008은 필요한 DLL이 비활성화된 경우에도 발생합니다. 관리자 권한 명령 프롬프트에서 다음 명령을 실행하세요. <DLL 이름> 부분은 실제 라이브러리 파일명으로 교체합니다.

lodctr /e:<DLL 이름>

반대로 하나 이상의 확장 가능 카운터 DLL을 비활성화(점검 목적)하려면 다음 단계를 따르세요.

  1. 레지스트리 편집기(RegEdt32.exe 또는 Regedit.exe)를 실행합니다.
  2. 다음 레지스트리 하위 키로 이동합니다.
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
  3. [보기] 메뉴에서 [키 찾기]를 선택합니다.
  4. 검색 문자열로 “Performance”를 입력한 후 아래 방향으로 검색합니다.
  5. Performance 항목을 찾을 때마다 Library 값을 선택하고, 라이브러리 이름 앞에 “xx”를 붙여 수정합니다. 예: OrigLib.dll → xxOrigLib.dll
  6. CurrentControlSet\Services 키 아래의 모든 Performance 항목에 대해 작업을 마친 후 Perfmon(성능 모니터)을 다시 실행해 정상 작동하는지 확인합니다. 정상이라면 위 두 단계를 반복하되 원래 라이브러리 이름으로 되돌리고, 변경할 때마다 Perfmon을 실행해 어느 라이브러리가 문제를 일으키는지 확인합니다.

마무리

Windows 10/11에서 Microsoft-Windows-Perflib 이벤트 오류 1020 및 1008이 발생하는 것은 번거롭지만 치명적인 오류는 아닙니다. 이벤트에 언급된 서비스의 성능 카운터가 굳이 필요하지 않다면 exctrlst.exe(Extensible Performance Counter List) 도구를 사용해 해당 카운터를 비활성화할 수도 있습니다. 다만 이는 알림을 잠시 숨기는 임시 방편일 뿐입니다. 오류를 근본적으로 해결하려면 위에서 안내한 문제 해결 방법을 차근차근 적용해 보시기 바랍니다.