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 문제 해결 안내도 같은 말을 합니다. 프로바이더 호스트의 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 프로세스 설명을, CPU 전반은 Windows CPU 사용률이 높을 때를 봅니다.
자주 묻는 질문
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 프로세스가 여러 개인 이유는 무엇입니까?
프로바이더는 별도의 호스트 프로세스에서 실행되므로 느린 프로바이더가 나머지를 붙들지 않습니다. 보통 바쁜 것은 그중 하나뿐입니다.