# WMI Provider Host CPU 사용량이 높은 원인을 찾는 방법

작업 관리자의 WMI Provider Host는 `WmiPrvSE.exe`로, 프로그램이 시스템에 대해 묻는 질문에 답하는 Windows 프로세스입니다. 어떤 디스크가 있는지, 배터리가 얼마나 남았는지, 어떤 서비스가 실행 중인지 같은 것입니다. 스스로 CPU를 많이 쓰는 일은 드뭅니다. 10~30%가 오래 이어진다면 다른 프로그램이 너무 자주, 또는 부하가 큰 요청을 보내고 있는 것이므로, 고칠 대상은 프로바이더 호스트가 아니라 그 프로그램을 찾는 일입니다.

## 무엇을 하고 있는가

Windows Management Instrumentation(WMI)은 스크립트, 모니터링 도구, 드라이버의 부속 앱, Windows 자체가 시스템 정보를 읽는 방법입니다. 요청은 프로바이더가 처리하고, 프로바이더는 하나 이상의 `WmiPrvSE.exe` 프로세스 안에서 실행됩니다. 작업 관리자에 WMI Provider Host 행이 동시에 여러 개 보이는 이유입니다. Microsoft의 [WMI 높은 CPU 문제 해결 안내](https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/troubleshoot-wmi-high-cpu-issues)도 같은 말을 합니다. 프로바이더 호스트의 CPU는 클라이언트가 보내는 쿼리를 반영하며, 할 일은 어떤 클라이언트와 어떤 프로바이더인지 찾는 것입니다.

| 보이는 것 | 가능한 원인 |
| --- | --- |
| 로그인할 때 짧은 급등, 그 뒤 조용함 | 시작 앱과 Windows가 한 번 인벤토리를 읽음 |
| 몇 초마다 일정한 부하가 하루 종일 이어짐 | WMI를 반복해서 조회하는 도구: 모니터, 제조사 유틸리티, 게임 오버레이 |
| 앱 하나를 설치한 뒤 CPU가 높음 | 그 앱의 서비스 또는 WMI 프로바이더 |
| WMI Provider Host 행이 여러 개이고 하나만 바쁨 | 한 프로바이더가 느리고 나머지는 괜찮음 |

## 묻고 있는 프로그램을 찾습니다

이벤트 뷰어(시작에서 `eventvwr` 입력)를 열고 응용 프로그램 및 서비스 로그 › Microsoft › Windows › WMI-Activity › Operational로 갑니다. 이벤트 ID 5858 오류는 실패한 쿼리와 그것을 보낸 `ClientProcessId`를 알려 줍니다. 이벤트 ID 5857은 어떤 프로바이더가 로드되었는지, 그것을 호스트하는 `WmiPrvSE.exe`의 프로세스 ID를 기록합니다.

그다음 `Ctrl + Shift + Esc`로 작업 관리자를 열고 세부 정보 탭에서 PID로 정렬합니다. `ClientProcessId`를 이름에 대응시키고, 바쁜 WMI Provider Host의 PID를 5857의 프로바이더에 대응시킵니다. 몇 분 안에 수백 개의 이벤트에 나타나는 클라이언트가 답입니다.

로그가 조용하다면, 자주 묻기만 하는 얌전한 쿼리는 오류를 남기지 않습니다. 그럴 때는 후보 앱을 하나씩 종료해 봅니다. 하드웨어 모니터, RGB와 팬 유틸리티, 제조사 업데이트 도우미, 문제가 시작되기 직전에 설치한 것부터 차례로, 프로바이더 호스트가 1분 안에 가라앉는지 지켜봅니다.

## 원인에서 고칩니다

- 조회하는 앱을 업데이트하거나 제거합니다. 많은 모니터링 도구에는 새로 고침 간격 설정이 있으며, 1초에 한 번은 흔하지만 거의 필요하지 않습니다.
- 바쁜 프로바이더가 하드웨어 제조사 소프트웨어의 것이라면 그 소프트웨어나 드라이버 패키지를 업데이트합니다. 이런 것들의 오래된 버전 중에는 WMI를 많이 쓰는 것으로 알려진 것이 있습니다.
- 원인을 없앤 뒤 한 번 다시 시작합니다. 프로바이더 호스트 프로세스는 필요할 때 다시 시작되므로 손으로 정리할 것이 없습니다.

## 하지 말 것

- WMI Provider Host를 반복해서 끝내지 마세요. 다음 쿼리가 오는 순간 Windows가 다시 시작하고, 물은 프로그램은 오류를 받아 더 세게 재시도할 수 있습니다.
- Windows Management Instrumentation 서비스를 비활성화하지 마세요. 설정 페이지, Windows 업데이트, Defender, 많은 드라이버 도구가 거기에 의존합니다.
- 높은 CPU 때문에 WMI 리포지토리를 초기화하거나 다시 빌드(`winmgmt /resetrepository`)하지 마세요. 손상된 리포지토리를 위한 복구이며, 앱이 등록한 프로바이더가 사라질 수 있습니다. Microsoft는 다른 문제를 위한 마지막 단계로 봅니다.

## Mole이 하는 일

Mole for Windows의 상태 페이지는 WMI Provider Host의 각 행을 CPU, 메모리, I/O와 함께 보여 줍니다. 행의 메뉴에서 왜 실행 중인가요?를 선택하면 `C:\Windows\System32\wbem`에 있는 프로그램 파일과 그것을 시작한 프로세스가 표시되고, Windows 폴더에서 실행되므로 Mole은 종료를 제공하지 않습니다. Mole 자신도 두 곳에서 WMI 클라이언트입니다. 노트북이 충전되는 동안 상태 페이지는 배터리가 완전히 충전되기까지의 시간을 1분에 최대 한 번 묻고, Doctor는 실행할 때 디스크 상태를 읽습니다. 어느 쪽도 반복해서 실행되지 않습니다. 다른 바쁜 이름은 [Windows 프로세스 설명](/ko/windows/blog/windows-processes-explained)을, CPU 전반은 [Windows CPU 사용률이 높을 때](/ko/windows/blog/windows-high-cpu-usage)를 봅니다.

## 자주 묻는 질문

### WMI Provider Host가 바이러스입니까?

진짜 `WmiPrvSE.exe`는 `C:\Windows\System32\wbem`에 있습니다. 다른 곳에 같은 이름의 파일이 있으면 Windows 보안으로 검사하세요.

### WMI Provider Host의 CPU 사용량이 높은 이유는 무엇입니까?

다른 프로그램이 WMI를 너무 자주 조회하거나 부하가 큰 데이터를 요청하기 때문입니다. 이벤트 뷰어의 WMI-Activity Operational 로그에 실패한 쿼리 뒤에 있는 클라이언트 프로세스 ID가 나옵니다.

### WMI Provider Host를 끝내거나 비활성화할 수 있습니까?

끝내도 몇 초뿐입니다. 다음 쿼리에서 Windows가 다시 시작하기 때문입니다. WMI 서비스를 비활성화하면 설정, 업데이트, 드라이버 도구가 망가집니다.

### WMI Provider Host 프로세스가 여러 개인 이유는 무엇입니까?

프로바이더는 별도의 호스트 프로세스에서 실행되므로 느린 프로바이더가 나머지를 붙들지 않습니다. 보통 바쁜 것은 그중 하나뿐입니다.


Canonical: https://mole.fit/ko/windows/blog/wmi-provider-host-high-cpu
