다음을 통해 공유


높은 CPU 사용량 문제 해결 지침

이 문서는 지속적인 높은 CPU 사용량의 원인을 식별하는 데 도움이 됩니다. 프로세스 또는 애플리케이션이 요청을 제공함에 따라 CPU 사용량이 증가할 것으로 예상할 수 있습니다. 그러나 CPU 사용량이 장기간 높은 수준(80% 이상)으로 일관되게 유지되는 경우 시스템 또는 애플리케이션의 성능이 저하됩니다. 이러한 이유로 가능한 경우 지속적으로 높은 CPU 사용량의 원인을 파악하여 문제를 해결할 수 있어야 합니다.

문제 해결 도구

작업 관리자

작업 관리자를 사용하여 CPU 사용량을 확인하여 높은 CPU 사용량을 유발하는 프로세스 또는 애플리케이션을 식별할 수 있습니다.

  1. 시작을 선택하고 작업을 입력한 다음 검색 결과에서 작업 관리자를 선택합니다.
  2. 작업 관리자 창은 기본적으로 프로세스 탭으로 설정됩니다. 이름 열에 프로세스 이름의 단일 목록이 표시되는 경우 그룹화된 프로세스의 인스턴스를 확장할 수 있습니다.
  3. CPU 열 머리글을 선택하여 CPU 사용량별로 목록을 정렬합니다. 헤더에 표시되는 화살표가 가장 높은 CPU 사용량에서 가장 낮은 CPU 사용량으로 데이터를 정렬하려면 아래쪽을 가리킵니다.

프로세스를 중지하거나 관련 서비스를 사용하지 않도록 설정할 수 있는 경우 프로세스 또는 서비스를 중지합니다. 그런 다음, 문제가 완화되는지 확인합니다.

리소스 모니터

리소스 모니터를 사용하여 CPU 사용량을 확인합니다.

  1. 시작을 선택하고, resmon을 입력한 다음, 검색 결과에서 리소스 모니터를 선택합니다.

  2. 리소스 모니터 창에서 CPU 탭을 선택합니다.

    참고 항목

    모든 데이터를 보려면 창을 최대화해야 할 수 있습니다.

  3. 전체 CPU 사용량별로 목록을 정렬하려면 평균 CPU 열 머리글을 선택합니다. 헤더에 표시되는 화살표가 가장 높은 CPU 사용량에서 가장 낮은 CPU 사용량으로 데이터를 정렬하려면 아래쪽을 가리킵니다.

프로세스 중 사용자 환경에 대해 예상보다 높은 사용률이 표시되는 경우 문제의 원인을 확인하려고 할 때 먼저 이러한 상위 프로세스를 고려합니다.

Process Explorer

프로세스 탐색기 도구는 프로세스를 호출한 사용자 및 프로세스에서 사용하는 총 시스템 리소스의 양에 대한 세부 정보를 포함하여 현재 컴퓨터에서 실행 중인 프로세스에 대한 전체 개요를 제공합니다.

운영 체제 관련 프로세스(예: 시스템)를 확인하려면 다음 단계를 수행합니다.

  1. 프로세스 탐색기를 관리자 권한으로 실행합니다.
  2. 프로세스를 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 스레드 탭을 선택합니다.
  3. 높은 CPU를 사용하는 스레드를 선택한 다음 Stack을 선택하여 실행 중인 함수를 봅니다.

참고 항목

더 나은 스택 정보 결과를 얻으려면 프로세스 탐색기에서 기호를 구성합니다. 이렇게 하려면 다음 단계를 수행하세요.

  1. Windows용 디버깅 도구를 설치 합니다.
  2. 프로세스 탐색기를 관리자 권한으로 실행합니다.
  3. 옵션 메뉴를 선택한 다음 기호 구성을 선택합니다.
  4. Dbghelp.dll 경로를 C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll 변경한 다음 확인을 선택합니다.

일반적인 문제 해결 시나리오

이 섹션에서는 높은 CPU 사용량을 사용하는 다양한 프로세스의 시나리오를 소개합니다.

고유하게 명명된 단일 Microsoft 프로세스

  1. 성능 모니터 로그를 수집합니다. 1초에서 5초까지의 스냅샷 간격을 사용합니다.
  2. 높은 CPU 사용량이 발생하는 동안 WPR(Windows 성능 레코더) 로그를 수집합니다.

    참고 항목

    파일이 매우 빠르게 증가하므로 이 로그를 오랫동안 실행하지 마세요. 높은 CPU 사용량을 캡처하려면 몇 분(3~5분) 동안만 로그를 실행해야 합니다.

  3. 보고된 높은 CPU 사용량 동안 ProcDump 도구를 두 번 실행합니다. 몇 분 간격으로 실행합니다.

Svchost 프로세스

svchost 프로세스에서 높은 CPU 사용량을 사용하고 svchost 프로세스에 둘 이상의 서비스가 포함된 경우 각 서비스를 중단하여 자체 svchost 프로세스에서 실행하여 CPU 사용량이 높은 서비스를 결정해야 합니다. 이렇게 하려면 다음 단계를 따르십시오.

  1. 관리자 권한 명령 프롬프트 창을 엽니다.

  2. 공유 svchost 프로세스인 경우 각 서비스를 자체 svchost 프로세스로 분리합니다. 이렇게 하려면 다음 명령을 실행합니다.

    sc config <service name> type= own
    

    참고 항목

    이 명령에서 서비스 이름을> 실제 서비스 이름으로 바꿉<다.

  3. 서비스를 다시 시작합니다.

  4. 명령 프롬프트에서 실행 tasklist /svc 하여 서비스가 자체 svchost 프로세스에서 실행되고 있는지 확인합니다.

    Important

    문제가 해결되면 2단계로 돌아가서 수행한 작업을 되돌려야 합니다.

    이렇게 하려면 명령으로 바 sc config <service name> type= share 꿉다sc config <service name> type= own. 그런 다음, 서비스를 다시 시작합니다.

  5. 각 서비스를 자체 svchost 프로세스로 분리한 후에는 CPU 사용량을 높이거나 높은 CPU 사용량을 소비하는 서비스를 식별해야 합니다.

  6. 성능 모니터 로그를 수집합니다. 1초에서 5초까지의 스냅샷 간격을 사용합니다.

  7. 불쾌한 Svchost 프로세스의 PID를 기록합니다.

  8. 문제가 발생하는 동안 WPR 로그를 수집합니다.

  9. 보고된 높은 CPU 사용량 동안 ProcDump를 두 번 실행합니다. 몇 분 간격으로 실행합니다.

이름이 같은 여러 프로세스 인스턴스

프로세스의 여러 인스턴스가 동일한 이름을 공유할 수 있습니다. 예를 들어 RDP(원격 데스크톱 프로토콜) 서버의 explorer.exe 프로세스에서 이 문제가 발생할 수 있습니다.

이 문제를 해결하려면 다음 단계를 수행합니다.

  1. 성능 모니터 로그를 수집합니다. 1초에서 5초까지의 스냅샷 간격을 사용합니다.

  2. 문제가 발생하는 동안 WPR 로그를 수집합니다.

  3. 보고된 높은 CPU 사용량 동안 ProcDump를 두 번 실행합니다. 몇 분 간격으로 실행합니다.

  4. 다음 명령을 실행하여 잘못된 프로세스의 PID를 기록합니다.

    tasklist /v /fo csv >Running_Process.txt

타사 애플리케이션 프로세스

세 번째 프로세스가 문제의 원인으로 확인되면 애플리케이션 공급업체에 문의하여 해당 프로세스가 컴퓨터에서 높은 CPU 사용량을 유발하는 이유를 이해해야 합니다.

데이터 수집

문제가 발생하기 전에

디버그 진단 2.0 버전을 사용하여 이 문제를 추가로 해결할 수 있습니다. 도구를 사용하려면 다음 단계를 수행합니다.

  1. 디버그 진단 도구 v2 업데이트 2를 설치합니다.

    Important

    2.0 버전을 설치하기 전에 다른 모든 버전의 디버그 진단 도구를 제거합니다.

  2. 시작을 선택하고 성능 모니터를 입력한 다음 성능 모니터 마우스 오른쪽 단추로 클릭하여 관리자 권한으로 실행합니다.

  3. 성능 모니터 사용하여 성능 카운터 로그를 수집하고 로깅을 시작합니다.

문제가 발생하는 경우

  1. DebugDiag 2 컬렉션을 엽니다.
  2. 프로세스 탭을 선택하고 적절한 애플리케이션 풀에 해당하는 작업자 프로세스를 마우스 오른쪽 단추로 클릭한 다음 전체 Userdump 만들기를 선택합니다.
  3. CPU 사용량이 많은 동안 2단계를 세 번 반복합니다.
  4. 성능 모니터 로깅을 중지합니다.
  5. DebugDiag를 사용하여 데이터를 압축합니다. 이렇게 하려면 도구>만들기 증분 캐비닛 파일을 선택합니다.

Microsoft 지원 연락해야 하는 경우 수집한 정보를 편리하게 보관하는 것이 좋습니다.