Compartir a través de


Solución de problemas de uso elevado de CPU de WMI

En este artículo se explica cómo diagnosticar problemas de uso elevado de CPU de Instrumental de administración de Windows (WMI) en cualquier sistema operativo Windows.

Identificación del problema

En la mayoría de los escenarios, el proceso de WmiPrvse.exe consume la CPU y hay algunas instancias en las que svchost.exe hospeda el servicio WMI (Winmgmt) consume un uso elevado de cpu.

Revise el panel Procesos del Administrador de tareas o el panel Detalles para identificar el proceso exacto.

Identifique si el proceso se WmiPrvse.exe o svchost.exe (hospedando el servicio WMI Winmgmt) e identifique el identificador del proceso.

Nota:

Es posible que tenga que agregar manualmente la columna PID para ver el identificador de proceso de todos los procesos del Administrador de tareas.

Este es un ejemplo. Vaya a Detalles del Administrador>de tareas y, a continuación, ordene por Nombre y busque el proceso de WmiPrvse.exe que consume un uso elevado de la CPU. Anote el identificador de proceso (PID).

En esta captura de pantalla se muestran varias instancias del host del proveedor WMI (el proceso de WmiPrvse.exe) como activas y su uso de CPU.

Captura de pantalla que muestra el proceso a través del administrador de tareas.

Esta captura de pantalla muestra El host de servicios: Instrumental de administración de Windows (svchost.exe hospedar el servicio Winmgmt) y su uso de CPU.

Captura de pantalla que muestra los detalles a través del administrador de tareas.

Vaya a Servicios del Administrador>de tareas, ordene por Nombre y busque el servicio Winmgmt. Anote el PID. Haga clic con el botón derecho en el servicio y seleccione Ir a los detalles para buscar el proceso de svchost.exe como se indica a continuación:

Captura de pantalla que muestra los servicios a través del administrador de tareas.

En el ejemplo, de tres instancias de WmiPrvse.exe , se encuentra PID 3648, que consume alrededor del 25 % del uso de CPU. Winmgmt se hospeda en el proceso de svchost.exe con PID 2752.

Descripción del consumo de CPU

Esto implica observar principalmente el consumo general de CPU y el PID identificado. Es importante tener en cuenta cuándo, cómo y la frecuencia del consumo de CPU.

Evalúe la situación mediante la comprensión de si el consumo de CPU es alto durante un tiempo específico. Compruebe si hay alguna actividad, como ejecutar tareas o servicios específicos activos, ejecutar aplicaciones de supervisión o ejecutar scripts que conducen a WmiPrvse.exe o a una CPU elevada de Winmgmt.

Comprenda si hay algún patrón, lo que significa que el uso de cpu es coherente, incoherente, aleatorio, esporádico o tiene picos regulares.

Identifique la frecuencia del consumo de CPU. Compruebe si se produce solo durante las horas de producción, las horas fuera del horario comercial o una hora aleatoria del día. También puede producirse durante una actividad específica, como el inicio de sesión o cierre de sesión del usuario.

Puede usar el Administrador de tareas y tomar nota visualmente de cómo es el patrón de uso de CPU.

Este es un ejemplo que muestra cómo usar la herramienta de Monitor de rendimiento (Perfmon) para identificar las instancias exactas de WmiPrvse.exe con el PID que identificó. También puede obtener una vista gráfica del consumo de CPU de cualquier proceso (WmiPrvse.exe o svchost.exe el servicio WMI de hospedaje).

  1. Abra un símbolo del sistema con privilegios elevados y escriba Perfmon.

  2. Seleccione Monitor de rendimiento en el panel izquierdo y seleccione el signo más (+) en el panel derecho para abrir la ventana Agregar contadores.

  3. Expanda Proceso y seleccione Id. Proceso. Seleccione todas las instancias de WmiPrvse# y, a continuación, seleccione Agregar>aceptar.

    Captura de pantalla que muestra cómo agregar contadores de proceso de identificador.

    Captura de pantalla que muestra los detalles de los contadores de proceso de identificador.

  4. En la ventana Agregar contadores , expanda Proceso y seleccione %Tiempo de procesador. Seleccione WmiPrvse# que coincida con el PID que consume un uso elevado de CPU y, a continuación, seleccione Agregar>aceptar.

    Captura de pantalla que muestra cómo agregar contadores de tiempo de procesador %.

    Captura de pantalla que muestra los detalles de los contadores de tiempo de procesador %.

  5. Para el contador "Id. Process", el valor Last, Average, Minimum y Maximum representan el PID del proceso de WmiPrvse.exe respectivo. Una vez que haya identificado la instancia exacta que consume un uso elevado de CPU, puede quitar las instancias restantes de instancias de WmiPrvse# de la lista presionando Eliminar.

En el ejemplo, se indica que WmiPrvse.exe PID 556 estaba consumiendo un uso elevado de CPU y es WmiPrvse#1 que coincide con PID 556 en Monitor de rendimiento.

A continuación, se agrega el contador %Tiempo de procesador de WmiPrvse#1 para ver una vista gráfica activa del uso de cpu de este proceso. En el ejemplo, el color %Processor Time de WmiPrvse#1 se cambia de amarillo a rojo.

Los pasos son los mismos para localizar el svchost# correcto en Monitor de rendimiento en el caso de un uso elevado de CPU por svchost.exe hospedar el servicio Wmimgmt.

Si observa que un proceso de svchost.exe que hospeda el servicio WMI está causando un uso elevado de la CPU y sospecha que WMI contribuye al problema, puede confirmar si el PID del proceso de svchost.exe hospeda el servicio WMI ejecutando el siguiente comando:

tasklist /svc /fi "Services eq Winmgmt"

Si el proceso de svchost.exe contiene varios servicios, puede dividir el servicio WMI en su propio proceso de svchost.exe siguiendo estos pasos:

  1. Abra un símbolo del sistema con privilegios elevados.

  2. Ejecute el siguiente comando:

    sc config Winmgmt type= own
    
  3. Reinicie el servicio WMI.

Después de reiniciar el servicio, puede ejecutar el Tasklist /svc comando para comprobar si el servicio Winmgmt se ejecuta en su propio proceso de svchost.exe .

Después de resolver el problema o dejar de requerir que el servicio esté en su propio proceso de svchost.exe, puede volver a colocarlo en el proceso de svchost.exe compartido. Puede realizar la acción ejecutando el siguiente comando desde un símbolo del sistema y reiniciando de nuevo el servicio WMI:

sc config Winmgmt type= share

Diagnóstico de WmiPrvse.exe

Hasta ahora, solo tiene el PID exacto de WmiPrvse.exe que consume un uso elevado de CPU. A continuación, recopile la mayor cantidad de información posible sobre este PID. Esto le ayuda a evaluar la situación o a identificar algo que podría estar causando el problema. Recopile información sobre otro uso de recursos o identifique el proveedor de WMI (DLL) exacto hospedado por el PID de WmiPrvse.exe identificado.

Otro uso de recursos, como la memoria, los identificadores, los subprocesos y el nombre de usuario

Recopile información sobre el uso de otros recursos, como la memoria, los identificadores, los subprocesos y el nombre de usuario, en el momento del uso elevado de la CPU. Puede usar la pestaña Detalles del Administrador de tareas, seleccionar el PID exacto y revisarlo.

Nota:

Agregue columnas adicionales según sea necesario.

Captura de pantalla que muestra el servicio de uso elevado de CPU en el Administrador de tareas.

Identificar el proveedor de WMI exacto (DLL) hospedado por el PID de WmiPrvse.exe identificado

Hay varios métodos para identificar los proveedores cargados en el proceso de WmiPrvSE.exe .

  1. Usar scripts: enumere todos los proveedores de WMI en ejecución para generar todos los proveedores de Instrumental de administración de Windows (WMI).

  2. El Explorador de procesos puede ayudarle a identificar los proveedores exactos hospedados en el PID identificado. Siga estos pasos:

    1. Ejecute el Explorador de procesos como administrador. Busque la WmiPrvse.exe PID identificada, vaya a sus propiedades y seleccione la pestaña Proveedores de WMI.

    2. En el ejemplo siguiente, WmiPrvse.exe PID 556 se encuentra y se encuentra hospedado:

      • Proveedor WMI: MS_NT_EVENTLOG_PROVIDER
      • Espacio de nombres: root\CIMV2
      • Ruta de acceso dll: %systemroot%\system32\wbem\ntevt.dll

      Captura de pantalla que muestra las propiedades WmiPrvSE.exe:556.

  3. En la mayoría de los casos, puede haber más de un proveedor cargado. Puede ser cualquiera de los proveedores que pasan tiempo en la CPU, lo que provoca problemas elevados de CPU.

A veces, si el problema es intermitente o poco frecuente, el WmiPrvse.exe que causa el problema se puede terminar con el tiempo. Cuando el problema se produce de nuevo, puede ser el mismo proveedor en una nueva instancia de WmiPrvse.exe . En esta situación, una vez que tenga los proveedores indicados, ejecute el siguiente cmdlet para mostrar el PID actual del proceso de WmiPrvse.exe que contiene ese proveedor:

tasklist /m <Provider DLL>

Este es un ejemplo:

tasklist /m ntevt.dll 

Captura de pantalla que muestra la salida de la lista de tareas del archivo ntevt.dll.

Por lo tanto, es importante comprender qué proveedores se cargan en el proceso de WmiPrvse.exe y tomar nota del PID del proceso de WmiPrvse.exe cada vez.

Una vez que tenga los proveedores que se cargan en el WmiPrvse.exe que causan un uso elevado de la CPU, puede comprender si controla las tareas.

Las tareas pueden ser las consultas WMI entrantes enviadas por el proceso de cliente al servicio WMI, que luego se asignan al proceso de proveedor WMI adecuado. En el ejemplo, la tarea se envía al MS_NT_EVENTLOG_PROVIDER proveedor. Por lo tanto, el siguiente paso será estudiar las consultas entrantes y las tareas al MS_NT_EVENTLOG_PROVIDER proveedor.

Análisis de las consultas entrantes

Examinar las consultas entrantes implica:

  • Identificación de las consultas WMI que administran los proveedores de WMI que provocan un uso elevado de la CPU.
  • Consultas de clases WMI.
  • Un usuario asociado.
  • Proceso de cliente que inicia la consulta.

La información anterior se puede recopilar con la herramienta disponible públicamente WMIMon o registros operativos de actividad de WMI y seguimiento de WMI disponibles en Visor de eventos.

Registros operativos: Microsoft-Windows-WMI-Activity/Operational

Las consultas entrantes se registran como eventos operativos en el registro Microsoft-Windows-WMI-Activity/Operational, que está disponible en:

Visor de eventos Registros>de aplicaciones y servicios de Microsoft>Windows>WMI-Activity>

Hay varios tipos de eventos registrados.

Si el proceso de WmiPrvse.exe que consume una CPU elevada finaliza de vez en cuando y ya sabe qué proveedores se cargan, el siguiente evento puede ayudar a determinar el proceso de WmiPrvse.exe activo actualmente que hospeda el proveedor en cuestión.

Log Name:      Microsoft-Windows-WMI-Activity/Operational
Source:        Microsoft-Windows-WMI-Activity
Event ID:      5857
Task Category: None
User:          NETWORK SERVICE
Description:
MS_NT_EVENTLOG_PROVIDER provider started with result code 0x0. HostProcess = wmiprvse.exe; ProcessID = 556; ProviderPath = %systemroot%\system32\wbem\ntevt.dll

Habilite "Registros analíticos y de depuración" para habilitar el seguimiento de WMI

En Visor de eventos, seleccione Ver>mostrar registros analíticos y de depuración para habilitar la depuración y el seguimiento de la actividad WMI.

Captura de pantalla que muestra Operativo en Visor de eventos.

La depuración y el seguimiento están deshabilitados de forma predeterminada y cada una de ellas se puede habilitar manualmente haciendo clic con el botón derecho en Seguimiento o Depuración y seleccionando Habilitar registro.

Nota:

Al habilitar Mostrar registros analíticos y de depuración, se habilita la depuración y el seguimiento de casi todos los orígenes de eventos y se crea un registro adicional. Por lo tanto, esto debe deshabilitarse una vez completada la investigación y ya no estará en uso.

Este seguimiento se puede mantener habilitado mientras observa un consumo elevado de CPU por el proceso de WmiPrvse.exe o lo suficientemente largo como para capturar el comportamiento de uso elevado de la CPU para mantener los registros limpios y de tamaño moderado para facilitar el análisis de seguimientos.

  1. Exporte los seguimientos haciendo clic con el botón derecho en Seguimiento y seleccionando Guardar todos los eventos como....

  2. Seleccione .xml o .csv en Guardar como tipo.

    Nota:

    Puede elegir otros formatos conocidos, como .EVTX los necesarios.

  3. Elija el idioma deseado del archivo de seguimiento.

  4. También puede guardar los eventos operativos de actividad de WMI por separado, en el formato deseado para que pueda revisar y analizar.

Revisión de los archivos de seguimiento de WMI

Dentro del seguimiento de WMI, hay varias operaciones importantes incluidas, que forman parte de las consultas WMI entrantes. Las operaciones se documentan en la interfaz IWbemServices (wbemcli.h)..

Algunas de las operaciones importantes son:

  • IWbemServices::ExecQuery método (wbemcli.h)
  • IWbemServices::ExecMethod método (wbemcli.h)
  • IWbemServices::ExecQueryAsync método (wbemcli.h)

Esta es una de las entradas de registro del archivo CSV WMI-Tracing guardado:

Nivel Fecha y hora Source Id. de evento Categoría de la tarea: Description
Información 05-05-23 14:48 Microsoft-Windows-WMI-Activity 11 Ninguno CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30693; OperationId = 30694; Operation = Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520

Un evento similar en formato XML tiene el siguiente aspecto:

 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
<Provider Name="Microsoft-Windows-WMI-Activity" Guid="{1418ef04-b0b4-4623-bf7e-d74ab47bbdaa}"/> 
<EventID>11</EventID> 
<Version>0</Version> 
<Level>4</Level> 
<Task>0</Task> 
<Opcode>0</Opcode> 
<Keywords>0x8000000000000000</Keywords> 
<TimeCreated SystemTime="2023-05-05T13:09:18.7442455Z"/> 
<EventRecordID>112</EventRecordID> 
<Correlation ActivityID="{eddc1bfb-0000-0000-0000-18b6cabf5949}"/> 
<Execution ProcessID="2752" ThreadID="4132"/> 
<Channel>Microsoft-Windows-WMI-Activity/Trace</Channel> 
<Computer>21H2W10M.contoso.com</Computer> 
<Security UserID="S-1-5-18"/> 
</System> 
<UserData> 
<Operation_New xmlns="http://manifests.microsoft.com/win/2006/windows/WMI"> 
<CorrelationId>{345E5566-0000-0000-0000-67343241D901}</CorrelationId> 
<GroupOperationId>28089</GroupOperationId> 
<OperationId>28090</OperationId> 
<Operation>Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product</Operation> 
<ClientMachine>21H2W10M</ClientMachine> 
<ClientMachineFQDN>21H2W10M.contoso.com</ClientMachineFQDN> 
<User>CONTOSO\<UserName></User> 
<ClientProcessId>5484</ClientProcessId> 
<ClientProcessCreationTime>133277000000783520</ClientProcessCreationTime> 
<NamespaceName>\\.\root\cimv2</NamespaceName> 
<IsLocal>true</IsLocal> 
</Operation_New> 
</UserData> 
<RenderingInfo Culture="en-US"> 
<Message>CorrelationId = {345E5566-0000-0000-0000-67343241D901}; GroupOperationId = 28089; OperationId = 28090; Operation = Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520</Message> 
<Level>Information</Level> 
<Task/> 
<Opcode>Info</Opcode> 
<Channel/> 
<Provider>Microsoft-Windows-WMI-Activity</Provider> 
<Keywords/> 
</RenderingInfo> 
</Event> 

En la salida de la operación de ejemplo anterior, puede obtener y comprender la siguiente información:

  • Se inició una consulta en: 2023-05-05 a las 13:09:18
  • En la máquina: 21H2W10M,
  • Desde un PID de cliente: 5484
  • Identificador de operación: 28089
  • Consulta: select * from Win32_Product
  • Espacio de nombres: \\.\root\cimv2
  • Operación: IWbemServices::ExecQuery

Este es otro registro:

Nivel Fecha y hora Source Id. de evento Categoría de la tarea: Description
Información 05-05-23 14:47 Microsoft-Windows-WMI-Activity 12 Ninguno ProviderInfo for GroupOperationId = 30641; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Ruta de acceso = %systemroot%\system32\wbem\ntevt.dll

El mismo evento en formato XML:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
<Provider Name="Microsoft-Windows-WMI-Activity" Guid="{1418ef04-b0b4-4623-bf7e-d74ab47bbdaa}"/> 
<EventID>12</EventID> 
<Version>0</Version> 
<Level>4</Level> 
<Task>0</Task> 
<Opcode>0</Opcode> 
<Keywords>0x8000000000000000</Keywords> 
<TimeCreated SystemTime="2023-05-05T13:09:18.8438242Z"/> 
<EventRecordID>120</EventRecordID> 
<Correlation ActivityID="{2a353ead-0000-0000-0000-256f9de5fabd}"/> 
<Execution ProcessID="2752" ThreadID="4348"/> 
<Channel>Microsoft-Windows-WMI-Activity/Trace</Channel> 
<Computer>21H2W10M.contoso.com</Computer> 
<Security UserID="S-1-5-21-0000000000-0000000000-00000000-1103"/> 
</System> 
<UserData> 
<Operation_Provider_Info_New xmlns="http://manifests.microsoft.com/win/2006/windows/WMI"> 
<GroupOperationId>28096</GroupOperationId> 
<Operation>Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent</Operation> 
<HostId>556</HostId> 
<ProviderName>MS_NT_EVENTLOG_PROVIDER</ProviderName> 
<ProviderGuid>{FD4F53E0-65DC-11d1-AB64-00C04FD9159E}</ProviderGuid> 
<Path>%systemroot%\system32\wbem\ntevt.dll</Path> 
</Operation_Provider_Info_New> 
</UserData> 
<RenderingInfo Culture="en-US"> 
<Message>ProviderInfo for GroupOperationId = 28096; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Path = %systemroot%\system32\wbem\ntevt.dll</Message> 
<Level>Information</Level> 
<Task/> 
<Opcode>Info</Opcode> 
<Channel/> 
<Provider>Microsoft-Windows-WMI-Activity</Provider> 
<Keywords/> 
</RenderingInfo> 
</Event> 

En la salida de la operación del segundo ejemplo, puede obtener y comprender la siguiente información:

  • Operation CreateInstanceEnum se inicia en nombre del usuario con SID: UserID="S-1-5-21-000000000000-000000000-000000000-1103"
  • El 2023-05-05 a las 13:09
  • Operación exacta: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Identificador de host: 556
  • Nombre del proveedor: MS_NT_EVENTLOG_PROVIDER
  • Ruta de acceso del proveedor: %systemroot%\system32\wbem\ntevt.dll

Busque los PID de cliente que provocan un uso elevado de la CPU.

La idea de revisar este archivo de registro es enumerar las operaciones asociadas con el PID de WmiPrvse.exe identificado que consume un uso elevado de CPU, comprender las consultas entrantes y quién las inicia (el proceso de cliente).

En el ejemplo descrito anteriormente, es el PID 552 que está causando un uso elevado de la CPU.

En el segundo ejemplo de la salida del registro, la operación CreateInstanceEnum se inicia para una clase Win32_NTLogEventWMI específica.

Para obtener más información, vea Win32_NTLogEvent, que incluye los detalles del proveedor WMI asociados a la clase WMI.

Ahora conoce el proveedor WMI exacto hospedado (MS_NT_EVENTLOG_PROVIDER) en el WmiPrvse.exe que está causando un uso elevado de cpu, el identificador de host (552) y la clase WMI (Win32_NTLogEvent) que se consultan en algún proceso de cliente.

En función de la herramienta que use para revisar los archivos de seguimiento, puede aplicar filtros necesarios para revisar solo las operaciones relacionadas con Win32_NTLogEvent o WmiPrvse.exe PID 552 o id. de host 552 o ntevt.dll.

Con el filtro que muestra solo las líneas o operaciones que incluyen "Win32_NTLogEvent", los resultados son:

Nivel Source Id. de evento Description
Información Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30641; OperationId = 30642; Operation = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Información Microsoft-Windows-WMI-Activity 12 ProviderInfo for GroupOperationId = 30641; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Ruta de acceso = %systemroot%\system32\wbem\ntevt.dll
Información Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30697; OperationId = 30698; Operation = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Información Microsoft-Windows-WMI-Activity 12 ProviderInfo for GroupOperationId = 30697; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Ruta de acceso = %systemroot%\system32\wbem\ntevt.dll

En las operaciones anteriores, puede obtener la siguiente información adicional:

  • Marca de tiempo
  • Id. de operación: 30642;
  • Operación exacta = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent;
  • Equipo cliente = 21H2W10M
  • User = CONTOSO\<UserName>
  • PID del cliente que ha iniciado la consulta: 5484

Por último, tiene el PID de un proceso de cliente 5484, que inicia una consulta en Win32_NTLogEvent. Esto se controla mediante el proveedor MS_NT_EVENTLOG_PROVIDER y se hospeda en WmiPrvse.exe PID 552, lo que provoca un uso elevado de la CPU.

Una vez que haya limitado los PID de cliente, use una de las siguientes herramientas para buscar el nombre del proceso.

Más información sobre WmiMon

WMImon.exe es una herramienta de supervisión eficaz que permite el seguimiento y la supervisión de eventos del sistema y el uso de recursos del servicio WMI.

Sirve la función importante de identificar las llamadas y consultas WMI realizadas por otros procesos, así como proporcionar información sobre la frecuencia de consulta, la cuenta de usuario usada para las consultas y la información solicitada.

Estos datos pueden ser útiles para los administradores del sistema que necesitan solucionar problemas de rendimiento.

Para recopilar y analizar estos datos, puede seguir las instrucciones paso a paso:

  1. Identifique el PID del WmiPrvSE.exe que consume el uso de la CPU mediante los métodos descritos anteriormente.
  2. Descargue la herramienta WMIMon.exe de GitHub - luctalpe/WMIMon. La herramienta es supervisar la actividad de WMI en Windows.
  3. Extraiga el contenido del archivo WMIMon_Binaries.zip en una carpeta del equipo.
  4. Abra un símbolo del sistema como administrador y vaya a la carpeta donde extrajo los archivos WMIMon.
  5. Ejecute el archivo WMIMon.exe escribiendo WMIMon.exe en el símbolo del sistema y presionando Entrar.
  6. WMIMon empezará a supervisar las llamadas WMI realizadas por procesos en el sistema, incluido el identificado en el paso 1.
  7. WMIMon muestra información como el identificador de proceso de cliente, el espacio de nombres WMI llamado por la operación, el nombre de la clase WMI y la cuenta de usuario usada para realizar la solicitud.
  8. Analice la salida de WMIMon para identificar qué procesos están realizando llamadas WMI frecuentes y, posiblemente, provocar un uso elevado de la CPU.

Siguiendo estos pasos, puede usar eficazmente WMIMon.exe para supervisar la actividad de WMI en el sistema e identificar cualquier problema de rendimiento o seguridad causado por un uso excesivo de WMI.

Este es un ejemplo:

Captura de pantalla que muestra los datos capturados por WMIMon.

Nota:

Puede exportar los datos capturados por WMIMon a un archivo de texto ejecutando el WMIMon.exe > Data.txt comando en el símbolo del sistema. Para detener la captura de datos, presione Ctrl + C.

Puede haber situaciones complicadas en las que restringir un PID, aplicación o EXE de cliente específico es imposible. En tales casos, considerar una entidad común, como un nombre de usuario o una máquina asociada, puede ser útil.

Es decir, comprenda si el usuario que inicia la consulta es una cuenta de servicio o está asociada a una aplicación específica.

Otras soluciones

Una vez finalizado el sospechoso, puede considerar la posibilidad de deshabilitar temporalmente su servicio o desinstalar la aplicación asociada a él y comprobar si se resuelve el problema de uso elevado de la CPU.

Estos son algunos escenarios en los que deshabilitarlo puede validar las observaciones.

  • Supervisión de aplicaciones y servicios
  • System Center Configuration Manager (SCCM) (policyhost.exe o Monitoringhost.exe)
  • Powershell.exe ejecutar scripts que contienen consultas WMI
  • Cualquier aplicación de terceros

Recolección de datos

Si necesita ayuda del soporte técnico de Microsoft, le recomendamos que recopile la información siguiendo los pasos mencionados en Recopilación de información mediante el uso de TSS para cuestiones relacionadas con la experiencia del usuario.

  1. Descargue TSS.zip y extraiga el contenido.

  2. Inicie el seguimiento mediante la ejecución del siguiente cmdlet desde un símbolo del sistema de PowerShell con privilegios elevados. Mantenga el seguimiento en ejecución cuando la máquina esté experimentando un problema elevado de CPU o reproduciendo el problema.

    .\TSS.ps1 -UEX_WMIBase -WIN_Kernel -ETWflags 1 -WPR CPU -Perfmon UEX_WMIPrvSE -PerfIntervalSec 1 -noBasicLog
    

    Nota:

    Mantenga el seguimiento en ejecución durante más de dos minutos. Asegúrese de que el problema se reproduce durante esta ventana.

  3. Detenga el seguimiento siguiendo las instrucciones del símbolo del sistema de PowerShell según el conjunto de herramientas de TSS.

El script creará un archivo ZIP que contiene los resultados de todos los seguimientos y la información de diagnóstico. Después de crear un caso de soporte técnico, este archivo se puede cargar en el área de trabajo segura para su análisis.