Поделиться через


Устранение неполадок с высоким потреблением ЦП WMI

В этой статье описывается диагностика проблем с высоким уровнем использования ЦП в любой операционной системе Windows.

Определение проблемы

В большинстве случаев ЦП потребляется процессом WmiPrvse.exe , и существует несколько экземпляров , где svchost.exe размещения службы WMI (Winmgmt) потребляет высокую загрузку ЦП.

Просмотрите область процессов диспетчера задач или область сведений, чтобы определить точный процесс.

Определите, является ли процесс WmiPrvse.exe или svchost.exe (размещение службы WMI Winmgmt) и определите идентификатор процесса.

Примечание.

Возможно, необходимо вручную добавить столбец PID для просмотра идентификатора процесса всех процессов в диспетчере задач.

Рассмотрим пример. Перейдите к сведениям диспетчера>задач, а затем сортируйте по имени и найдите процесс WmiPrvse.exe, который потребляет высокую загрузку ЦП. Запишите идентификатор процесса (PID).

Снимок экрана: несколько экземпляров узла поставщика WMI (процесс WmiPrvse.exe) в качестве активного и его использования ЦП.

Снимок экрана: процесс с помощью диспетчера задач.

Снимок экрана: узел служб: инструментирование управления Windows (svchost.exe размещение службы Winmgmt) и его использование ЦП.

Снимок экрана: сведения с помощью диспетчера задач.

Перейдите к службам диспетчера>задач, сортируйте по имени и найдите службу Winmgmt. Запишите идентификатор идентификатора. Щелкните правой кнопкой мыши службу и выберите "Перейти к сведениям ", чтобы найти процесс svchost.exe следующим образом:

Снимок экрана: службы с помощью диспетчера задач.

В этом примере из трех экземпляров WmiPrvse.exe находится PID 3648, который потребляет около 25 % использования ЦП. Winmgmt размещается в процессе svchost.exe с PID 2752.

Общие сведения о потреблении ЦП

Это включает в себя в основном наблюдение за общим потреблением ЦП и определяемой piD. Важно отметить, когда, как и частота потребления ЦП.

Оцените ситуацию, понимая, высока ли потребление ЦП в течение определенного времени. Проверьте, есть ли какие-либо действия, например выполнение определенных задач или служб, активных приложений мониторинга или выполнение скриптов, что приводит к WmiPrvse.exe или Winmgmt с высоким ЦП.

Понять, существует ли какой-либо шаблон, то есть использование ЦП является согласованным, несогласованным, случайным, спорадическим или имеет регулярные пики.

Определите частоту потребления ЦП. Проверьте, происходит ли оно только в рабочие часы, нерабочие часы или случайное время дня. Это также может произойти во время определенного действия, например входа пользователя или выхода.

Вы можете использовать диспетчер задач и визуально заметить, как работает шаблон использования ЦП.

Ниже приведен пример, показывающий, как использовать средство Монитор производительности (Perfmon) для идентификации точных экземпляров WmiPrvse.exe с указанным идентификатором PID. Вы также можете получить графическое представление потребления ЦП любого процесса (WmiPrvse.exe или svchost.exe размещения службы WMI).

  1. Откройте командную строку с повышенными привилегиями и введите Perfmon.

  2. Выберите Монитор производительности в левой области и выберите знак плюса (+) в правой области, чтобы открыть окно "Добавить счетчики".

  3. Разверните процесс и выберите "Процесс идентификатора". Выберите все экземпляры WmiPrvse# и нажмите кнопку "Добавить>ОК".

    Снимок экрана: добавление счетчиков процесса идентификаторов.

    Снимок экрана: сведения о счетчиках процесса идентификаторов.

  4. В окне "Добавление счетчиков" разверните узел "Процесс" и выберите %Processor Time. Выберите WmiPrvse#, соответствующий PID, использующие высокий объем ЦП, и нажмите кнопку "Добавить>ОК".

    Снимок экрана: добавление счетчиков времени процессора.

    Снимок экрана: сведения о счетчиках времени процессора.

  5. Для счетчика "Процесс идентификатора" значение "Последний", "Среднее", "Минимальное" и "Максимальное" представляет идентификатор идентификатора соответствующего процесса WmiPrvse.exe. После определения точного экземпляра, который потребляет высокую загрузку ЦП, вы можете удалить оставшиеся экземпляры экземпляров WmiPrvse# из списка, нажав клавишу DELETE.

В этом примере отмечается, что WmiPrvse.exe PID 556 потребляет высокую загрузку ЦП, и это WmiPrvse#1, соответствующий PID 556 в Монитор производительности.

Затем добавляется счетчик %Processor Time wmiPrvse #1 , чтобы увидеть динамическое графическое представление об использовании ЦП этого процесса. В примере цвет %Processor Time WmiPrvse #1 изменяется с желтого на красный.

Эти шаги одинаковы для поиска правого svchost# в Монитор производительности в случае высокой загрузки ЦП, svchost.exe размещения службы Wmimgmt.

Если вы заметили, что процесс svchost.exe, в котором размещена служба WMI, вызывает высокую загрузку ЦП и подозревает, что WMI вносит свой вклад в проблему, вы можете убедиться, что PID процесса svchost.exe размещает службу WMI, выполнив следующую команду:

tasklist /svc /fi "Services eq Winmgmt"

Если процесс svchost.exe содержит несколько служб, можно разделить службу WMI на собственный процесс svchost.exe, выполнив следующие действия:

  1. Откройте командную строку с повышенными привилегиями.

  2. Выполните следующую команду:

    sc config Winmgmt type= own
    
  3. Перезапустите службу WMI.

После перезапуска службы можно выполнить Tasklist /svc команду, чтобы проверить, запущена ли служба Winmgmt в рамках собственного процесса svchost.exe .

После устранения проблемы или больше не требуется, чтобы служба была в собственном процессе svchost.exe , ее можно поместить обратно в общий процесс svchost.exe . Чтобы выполнить это действие, выполните следующую команду из командной строки и снова перезапустите службу WMI:

sc config Winmgmt type= share

Диагностика WmiPrvse.exe

До сих пор у вас есть только точный piD WmiPrvse.exe , который потребляет высокую загрузку ЦП. Затем соберите максимально подробную информацию об этом piD. Это помогает оценить ситуацию или определить что-то, что может вызвать проблему. Соберите сведения об использовании других ресурсов или определите точный поставщик WMI (DLL), размещенный WmiPrvse.exe идентификатором PID.

Другие ресурсы, такие как память, дескриптор, потоки и имя пользователя

Соберите сведения об использовании других ресурсов, таких как память, дескриптор, потоки и имя пользователя во время высокой загрузки ЦП. Вы можете использовать вкладку "Сведения" в диспетчере задач, выбрать точный идентификатор идентификатора и просмотреть его.

Примечание.

При необходимости добавьте дополнительные столбцы.

Снимок экрана: служба высокого использования ЦП в диспетчере задач.

Определите точный поставщик WMI (DLL), размещенный WmiPrvse.exe PID, определенный

Существует несколько методов для идентификации поставщиков, загруженных в процессе WmiPrvSE.exe .

  1. Использование скриптов. Вывод списка всех работающих поставщиков WMI для вывода всех работающих поставщиков инструментария управления Windows (WMI).

  2. Обозреватель процессов поможет определить точных поставщиков, размещенных в идентификаторе PID. Выполните следующие действия:

    1. Запустите обозреватель процессов от имени администратора. Найдите идентифицированный WmiPrvse.exe PID, перейдите к его свойствам и перейдите на вкладку "Поставщики WMI".

    2. В следующем примере находится WmiPrvse.exe PID 556 и находится в качестве размещения:

      • Поставщик WMI: MS_NT_EVENTLOG_PROVIDER
      • Пространство имен: root\CIMV2
      • Путь к библиотеке DLL: %systemroot%\system32\wbem\ntevt.dll

      Снимок экрана: свойства WmiPrvSE.exe:556.

  3. В большинстве случаев может быть загружено несколько поставщиков. Это может быть любой из поставщиков, которые тратят время на ЦП, что приводит к высоким проблемам ЦП.

Иногда, если проблема периодически возникает или редко, WmiPrvse.exe, вызывающая проблему, может быть прекращена с течением времени. Когда проблема возникает снова, это может быть то же самое поставщики в новом экземпляре WmiPrvse.exe . В этой ситуации, когда у вас есть указанные поставщики, выполните следующий командлет, чтобы отобразить текущий идентификатор WmiPrvse.exe процесса, содержащего этот поставщик:

tasklist /m <Provider DLL>

Приведем пример:

tasklist /m ntevt.dll 

Снимок экрана: выходные данные списка задач ntevt.dll файла.

Поэтому важно понять, какие поставщики загружаются в процессе WmiPrvse.exe, и запишите ИДЕНТИФИКАТОР WmiPrvse.exe процесса каждый раз.

После того как у вас есть поставщики, загруженные в WmiPrvse.exe вызывающих высокую загрузку ЦП, вы можете понять, обрабатывает ли она какие-либо задачи.

Задачи могут представлять собой входящие запросы WMI, отправленные клиентом в службу WMI, которая затем назначается соответствующему процессу поставщика WMI. В примере задача отправляется поставщику MS_NT_EVENTLOG_PROVIDER . Таким образом, следующим шагом будет изучение входящих запросов и задач поставщика MS_NT_EVENTLOG_PROVIDER .

Анализ входящих запросов

Изучение входящих запросов включает в себя:

  • Определение запросов WMI, обрабатываемых поставщиками WMI, что приводит к высокой загрузке ЦП.
  • Запросы класса WMI.
  • Связанный пользователь.
  • Клиентский процесс, инициирующий запрос.

Приведенные выше сведения можно собрать с помощью общедоступных журналов WMIMon или операционных журналов WMI-Activity и WMI-Трассировки, доступных в Просмотр событий.

Операционные журналы: Microsoft-Windows-WMI-Activity/Operational

Входящие запросы регистрируются в виде операционных событий в журнале действий и операций Microsoft-Windows-WMI-Activity/Operations, который доступен в следующем разделе:

Просмотр событий Applications and Services Logs>Microsoft>Windows>WMI-Activity>

Регистрируются события нескольких типов.

Если процесс WmiPrvse.exe, потребляющий высокий объем ЦП, завершается время от времени, и вы уже знаете, какие поставщики загружены, следующее событие может помочь определить текущий активный процесс WmiPrvse.exe, в котором размещен поставщик.

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

Включение аналитики и отладки журналов для включения трассировки WMI

В Просмотр событий выберите "Просмотреть>журналы отображения аналитики и отладки", чтобы включить отладку и трассировку для действий WMI.

Снимок экрана: операционный режим в Просмотр событий.

Отладка и трассировка отключены по умолчанию, и каждый из них можно включить вручную, щелкнув правой кнопкой мыши трассировку или отладку, а затем выбрав "Включить журнал".

Примечание.

Включение журналов show Analytic and Debug включает отладку и трассировку практически для всех источников событий и создает дополнительное ведение журнала. Поэтому это должно быть отключено после завершения расследования и больше не будет использоваться.

Эта трассировка может быть включена при наблюдении за высоким потреблением ЦП в процессе WmiPrvse.exe или достаточно долго для отслеживания поведения высокой загрузки ЦП, чтобы обеспечить очистку журналов и средний размер для упрощения анализа трассировки.

  1. Экспортируйте трассировки, щелкнув правой кнопкой мыши трассировку и выбрав "Сохранить все события как...".

  2. Выберите .xml или .csv в поле "Сохранить как тип".

    Примечание.

    Вы можете выбрать другие знакомые форматы, например .EVTX необходимые.

  3. Выберите нужный язык файла трассировки.

  4. Вы можете сохранить операционные события WMI-Activity отдельно, а также в нужном формате для просмотра и анализа.

Просмотр файлов трассировки WMI

В трассировке WMI есть несколько важных операций, которые являются частью входящих запросов WMI. Операции документируются в интерфейсе IWbemServices (wbemcli.h).

Ниже приведены некоторые важные операции.

  • IWbemServices::ExecQuery method (wbemcli.h)
  • IWbemServices::ExecMethod method (wbemcli.h)
  • IWbemServices::ExecQueryAsync method (wbemcli.h)

Вот одна из записей журнала из сохраненного CSV-файла WMI-Трассировки:

Уровень Дата и время Исходный код ИД события Категория задач Description
Сведения 05-05-23 14:48 Microsoft-Windows-WMI-Activity 11 нет 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

Аналогичное событие в формате 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>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> 

В приведенном выше примере выходных данных операции вы можете получить и понять следующие сведения:

  • Запрос был инициирован: 2023-05-05 в 13:09:18
  • На компьютере: 21H2W10M,
  • От пин-код клиента: 5484
  • Идентификатор операции: 28089
  • Запрос: select * from Win32_Product
  • Пространство имен: \\.\root\cimv2
  • Операция: IWbemServices::ExecQuery

Вот еще один журнал:

Уровень Дата и время Исходный код ИД события Категория задач Description
Сведения 05-05-23 14:47 Microsoft-Windows-WMI-Activity 12 нет ProviderInfo для GroupOperationId = 30641; 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

То же событие в формате 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> 

В выходных данных операции второго примера можно получить и понять следующие сведения:

  • Операция CreateInstanceEnum инициируется от имени пользователя с идентификатором БЕЗОПАСНОСТИ: UserID="S-1-5-21-0000000000000000000000000-000000000-1103"
  • 2023-05-05 в 13:09
  • Точную операцию: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Идентификатор узла: 556
  • Имя поставщика: MS_NT_EVENTLOG_PROVIDER
  • Путь поставщика: %systemroot%\system32\wbem\ntevt.dll

Поиск идентификаторов пин-кодов клиента, вызывающих высокую загрузку ЦП

Идея проверки этого файла журнала заключается в том, чтобы перечислить операции, связанные с определенными WmiPrvse.exe PID, которые используют высокую загрузку ЦП, понять входящие запросы и кто инициирует их (клиентский процесс).

В приведенном выше примере это PID 552, который вызывает высокую загрузку ЦП.

Во втором примере выходных данных журнала операция CreateInstanceEnum инициируется для определенного класса Win32_NTLogEventWMI.

Дополнительные сведения см. в Win32_NTLogEvent, включающую сведения о поставщике WMI, связанные с классом WMI.

Теперь вы знаете точный поставщик WMI, размещенный (MS_NT_EVENTLOG_PROVIDER) в WmiPrvse.exe , что приводит к высокой загрузке ЦП, идентификатору узла (552) и классу WMI (Win32_NTLogEvent), который запрашивается некоторыми клиентскими процессами.

В зависимости от используемого средства для просмотра файлов трассировки можно применить необходимые фильтры для проверки только операций, связанных Win32_NTLogEvent с или WmiPrvse.exe PID 552 или идентификатора узла 552 или ntevt.dll.

В фильтре отображаются только строки или операции, включающие "Win32_NTLogEvent", результаты:

Уровень Исходный код Идентификатор события Description
Сведения 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
Информация Microsoft-Windows-WMI-Activity 12 ProviderInfo для GroupOperationId = 30641; 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
Информация 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
Информация Microsoft-Windows-WMI-Activity 12 ProviderInfo для GroupOperationId = 30697; 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

Из приведенных выше операций можно получить следующие дополнительные сведения:

  • Метка времени
  • Идентификатор операции: 30642;
  • Точную операцию = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent;
  • Клиентский компьютер = 21H2W10M
  • User = CONTOSO\<UserName>
  • PiD клиента, инициирующего запрос: 5484

Наконец, у вас есть ИДЕНТИФИКАТОР клиентского процесса 5484, который инициирует запрос Win32_NTLogEvent. Это обрабатывается поставщиком MS_NT_EVENTLOG_PROVIDER и размещается в WmiPrvse.exe PID 552, что приводит к высокой загрузке ЦП.

После того как вы сузили идентификаторы клиента, используйте один из следующих средств, чтобы найти имя процесса.

Дополнительные сведения о WmiMon

WMImon.exe — это мощное средство мониторинга, позволяющее отслеживать и отслеживать системные события и использование ресурсов службы WMI.

Она служит важной функцией определения вызовов и запросов WMI, сделанных другими процессами, а также предоставления сведений о частоте запросов, учетной записи пользователя, используемой для запросов, и запрошенной информации.

Эти данные могут быть полезны для системных администраторов, которые должны устранять проблемы с производительностью.

Чтобы собрать и проанализировать эти данные, выполните пошаговые инструкции.

  1. Определите идентификатор идентификатора WmiPrvSE.exe , который использует использование ЦП с помощью описанных выше методов.
  2. Скачайте средство WMIMon.exe из GitHub — luctalpe/WMIMon. Это средство предназначено для мониторинга действий WMI в Windows.
  3. Извлеките содержимое файла WMIMon_Binaries.zip в папку на компьютере.
  4. Откройте командную строку от имени администратора и перейдите в папку, в которой вы извлекли файлы WMIMon.
  5. Выполните файл WMIMon.exe, введя WMIMon.exe в командную строку и нажав клавишу ВВОД.
  6. WMIMon теперь начнет мониторинг вызовов WMI, выполненных процессами в системе, включая один из них, определенный на шаге 1.
  7. WMIMon отображает такие сведения, как идентификатор процесса клиента, пространство имен WMI, вызываемое операцией, имя класса WMI и учетная запись пользователя, используемая для выполнения запроса.
  8. Анализ выходных данных из WMIMon, чтобы определить, какие процессы (es) делают частые вызовы WMI и потенциально вызывают высокую загрузку ЦП.

Следуя этим инструкциям, вы можете эффективно использовать WMIMon.exe для мониторинга активности WMI в системе и выявления проблем производительности или безопасности, вызванных чрезмерным использованием WMI.

Приведем пример:

Снимок экрана: данные, захваченные WMIMon.

Примечание.

Данные, захваченные WMIMon, можно экспортировать в текстовый файл, выполнив WMIMon.exe > Data.txt команду в командной строке. Чтобы остановить запись данных, нажмите клавиши CTRL + C.

Могут возникнуть сложные ситуации, когда сузить определенный идентификатор клиента, приложение или EXE невозможно. В таких случаях, учитывая общую сущность, например имя пользователя или связанный компьютер, может оказаться полезным.

Это значит, что пользователь, инициирующий запрос, является учетной записью службы или связан с определенным приложением.

Другие решения

После завершения подозреваемого можно временно отключить службу или удалить приложение, связанное с ним, и проверить, устранена ли проблема с высоким использованием ЦП.

Ниже приведены некоторые сценарии, в которых отключение может проверить ваши наблюдения.

  • Мониторинг приложений и служб
  • System Center Configuration Manager (SCCM) (policyhost.exe или Monitoringhost.exe)
  • Powershell.exe выполняющихся скриптов, содержащих запросы WMI
  • Любое стороннее приложение

Сбор данных

Если вам нужна помощь от поддержки Майкрософт, рекомендуется собирать сведения, выполнив действия, описанные в статье "Сбор сведений" с помощью TSS для проблем с взаимодействием с пользователем.

  1. Скачайте TSS.zip и извлеките содержимое.

  2. Запустите трассировку, выполнив следующий командлет из командной строки PowerShell с повышенными привилегиями. Следите за выполнением трассировки, когда компьютер сталкивается с высокой проблемой ЦП или воспроизводит проблему.

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

    Примечание.

    Продолжайте трассировку более чем за две минуты. Убедитесь, что проблема воспроизводится во время этого окна.

  3. Остановите трассировку, следуя инструкциям в командной строке PowerShell в соответствии с набором инструментов TSS.

Скрипт создаст ZIP-файл, содержащий результаты всех трассировок и диагностические сведения. После создания варианта поддержки этот файл можно отправить в безопасную рабочую область для анализа.