Dela via


Felsöka problem med hög CPU-användning i WMI

Den här artikeln beskriver hur du diagnostiserar problem med hög CPU-användning (Windows Management Instrumentation) i alla Windows-operativsystem.

Identifiera problemet

I de flesta scenarier förbrukas processorn av WmiPrvse.exe processen, och det finns några instanser där svchost.exe som är värd för WMI-tjänsten (Winmgmt) förbrukar hög CPU-användning.

Granska fönstret Processer i Aktivitetshanteraren eller informationsfönstret för att identifiera den exakta processen

Identifiera om processen är WmiPrvse.exe eller svchost.exe (värd för WMI-tjänsten Winmgmt) och identifiera process-ID:t.

Kommentar

Du kan behöva lägga till PID-kolumnen manuellt för att visa process-ID för alla processer i Aktivitetshanteraren.

Här följer ett exempel. Gå till Aktivitetshanterarens>information och sortera sedan efter Namn och leta upp den WmiPrvse.exe process som förbrukar hög CPU-användning. Anteckna process-ID (PID).

Den här skärmbilden visar flera instanser av WMI-providervärden (WmiPrvse.exe process) som aktiva och dess CPU-användning.

Skärmbild som visar processen via Aktivitetshanteraren.

Den här skärmbilden visar Tjänstvärd: Windows Management Instrumentation (svchost.exe värd för Winmgmt-tjänsten) och dess CPU-användning.

Skärmbild som visar information via Aktivitetshanteraren.

Gå till Task Manager>Services, sortera efter Namn och leta upp Winmgmt-tjänsten. Anteckna PID:en. Högerklicka på tjänsten och välj Gå till information för att hitta svchost.exe processen på följande sätt:

Skärmbild som visar tjänsterna via Aktivitetshanteraren.

I exemplet, av tre WmiPrvse.exe instanser, finns PID 3648, som förbrukar cirka 25 % av CPU-användningen. Winmgmt finns under svchost.exe process med PID 2752.

Förstå CPU-förbrukningen

Detta innebär främst att observera den totala CPU-förbrukningen och pid som identifierats. Det är viktigt att notera när, hur och hur ofta processorförbrukningen används.

Utvärdera situationen genom att förstå om CPU-förbrukningen är hög under en viss tid. Kontrollera om det finns någon aktivitet, till exempel att köra specifika uppgifter eller tjänster aktiva, köra övervakningsprogram eller köra skript som leder till WmiPrvse.exe eller Winmgmt hög CPU.

Förstå om det finns något mönster, vilket innebär att CPU-användningen är konsekvent, inkonsekvent, slumpmässig, sporadisk eller har regelbundna toppar.

Identifiera cpu-förbrukningens frekvens. Kontrollera om det bara inträffar under produktionstimmar, kontorstid eller slumpmässig tid på dagen. Det kan också inträffa under en viss aktivitet som att användaren loggar in eller loggar ut.

Du kan använda Aktivitetshanteraren och visuellt anteckna hur cpu-användningsmönstret är.

Här är ett exempel som visar hur du använder verktyget Prestandaövervakare (Perfmon) för att identifiera de exakta instanserna av WmiPrvse.exe med den PID som du identifierade. Du kan också få en grafisk vy över processorförbrukningen för alla processer (WmiPrvse.exe eller svchost.exe som är värd för WMI-tjänsten).

  1. Öppna en upphöjd kommandotolk och ange Perfmon.

  2. Välj Prestandaövervakaren i den vänstra rutan och välj plustecknet (+) i den högra rutan för att öppna fönstret Lägg till räknare .

  3. Expandera Process och välj ID Process. Välj alla WmiPrvse#-instanser och välj sedan Lägg till>OK.

    Skärmbild som visar hur du lägger till ID Process-räknare.

    Skärmbild som visar information om ID-processräknarna.

  4. I fönstret Lägg till räknare expanderar du Process och väljer %Processortid. Välj WmiPrvse# som matchar DEN PID som förbrukar hög CPU-användning och välj sedan Lägg till>OK.

    Skärmbild som visar hur du lägger till %Processortidsräknare.

    Skärmbild som visar information om %Processortidsräknare.

  5. För räknaren "ID Process" representerar alla PID för respektive WmiPrvse.exe process. När du har identifierat den exakta instans som förbrukar hög CPU-användning kan du ta bort de återstående instanserna av WmiPrvse# -instanser från listan genom att trycka på Ta bort.

I exemplet noteras att WmiPrvse.exe PID 556 förbrukade hög CPU-användning och att det är WmiPrvse#1 som matchar PID 556 i Prestandaövervakaren.

Sedan läggs räknaren %Processortid för WmiPrvse#1 till för att se en grafisk livevy över processoranvändningen i den här processen. I exemplet ändras %Processortidsfärgen för WmiPrvse#1 från gul till röd.

Stegen är desamma för att hitta rätt svchost# i Prestandaövervakaren vid hög CPU-användning genom att svchost.exe värd för Wmimgmt-tjänsten.

Om du observerar att en svchost.exe process som är värd för WMI-tjänsten orsakar hög CPU-användning och misstänker att WMI bidrar till problemet, kan du bekräfta om PID för svchost.exe processen är värd för WMI-tjänsten genom att köra följande kommando:

tasklist /svc /fi "Services eq Winmgmt"

Om svchost.exe processen innehåller flera tjänster kan du dela upp WMI-tjänsten i sin egen svchost.exe process genom att följa dessa steg:

  1. Öppna en upphöjd kommandotolk med förhöjd behörighet.

  2. Kör följande kommando:

    sc config Winmgmt type= own
    
  3. Starta om WMI-tjänsten.

När du har startat om tjänsten kan du köra Tasklist /svc kommandot för att kontrollera om Winmgmt-tjänsten körs under en egen svchost.exe process.

När du har löst problemet eller inte längre kräver att tjänsten är i sin egen svchost.exe process kan du placera den i den delade svchost.exe processen igen. Du kan utföra åtgärden genom att köra följande kommando från en kommandotolk och sedan starta om WMI-tjänsten igen:

sc config Winmgmt type= share

Diagnostisera WmiPrvse.exe

Hittills har du bara den exakta PID för WmiPrvse.exe som förbrukar hög CPU-användning. Samla sedan in så mycket information som möjligt om denna PID. Detta hjälper dig att bedöma situationen eller identifiera något som kan orsaka problemet. Samla in information om annan resursanvändning eller identifiera den exakta WMI-providern (DLL) som hanteras av den WmiPrvse.exe PID som identifierats.

Annan resursanvändning, till exempel minne, handtag, trådar och användarnamn

Samla in information om annan resursanvändning, till exempel minne, handtag, trådar och användarnamn, vid tidpunkten för hög CPU-användning. Du kan använda fliken Information i Aktivitetshanteraren, välja exakt PID och granska den.

Kommentar

Lägg till ytterligare kolumner efter behov.

Skärmbild som visar tjänsten för hög CPU-användning i Aktivitetshanteraren.

Identifiera den exakta WMI-providern (DLL) som hanteras av den WmiPrvse.exe PID som identifierats

Det finns flera metoder för att identifiera de leverantörer som läses in i WmiPrvSE.exe processen.

  1. Använd skript: Lista alla WMI-leverantörer som körs för att mata ut alla WMI-leverantörer (Windows Management Instrumentation).

  2. Process Explorer kan hjälpa dig att identifiera de exakta leverantörer som finns i den identifierade PID:en. Följ de här stegen:

    1. Kör Process Explorer som administratör. Leta upp den identifierade WmiPrvse.exe PID, gå till dess egenskaper och välj fliken WMI-providers .

    2. I följande exempel finns WmiPrvse.exe PID 556 som är värd:

      • WMI-provider: MS_NT_EVENTLOG_PROVIDER
      • Namnområde: root\CIMV2
      • DLL-sökväg: %systemroot%\system32\wbem\ntevt.dll

      Skärmbild som visar egenskaperna WmiPrvSE.exe:556.

  3. I de flesta fall kan det finnas fler än en leverantör som läses in. Det kan vara någon av de leverantörer som tillbringar tid i processorn, vilket orsakar höga CPU-problem.

Ibland, om problemet är tillfälligt eller sällan, kan WmiPrvse.exe som orsakar problemet avslutas över tid. När problemet uppstår igen kan det vara samma provider i en ny WmiPrvse.exe instans. I det här fallet kör du följande cmdlet när du har angett providern eller providern för att visa den aktuella PID:en för den WmiPrvse.exe process som innehåller providern:

tasklist /m <Provider DLL>

Här är ett exempel:

tasklist /m ntevt.dll 

Skärmbild som visar aktivitetslistans utdata för ntevt.dll-filen.

Därför är det viktigt att förstå vilka leverantörer som läses in i WmiPrvse.exe processen och anteckna PID för WmiPrvse.exe processen varje gång.

När du har de leverantörer som läses in i WmiPrvse.exe orsakar hög CPU-användning kan du förstå om den hanterar några uppgifter.

Uppgifter kan vara inkommande WMI-frågor som skickas av klientprocessen till WMI-tjänsten, som sedan tilldelas till lämplig WMI-providerprocess. I exemplet skickas uppgiften till providern MS_NT_EVENTLOG_PROVIDER . Nästa steg blir därför att studera inkommande frågor och uppgifter till providern MS_NT_EVENTLOG_PROVIDER .

Analysera inkommande frågor

Att undersöka inkommande frågor omfattar:

  • Identifiera WMI-frågor som hanteras av WMI-leverantörer som orsakar hög CPU-användning.
  • WMI-klassfrågor( es).
  • En associerad användare.
  • En klientprocess som initierar frågan.

Ovanstående information kan samlas in med hjälp av det offentligt tillgängliga verktyget WMIMon- eller WMI-Activity Operational Logs och WMI-Tracing som är tillgängliga under Loggboken.

Driftloggar: Microsoft-Windows-WMI-Activity/Operational

Inkommande frågor loggas som driftshändelser i loggen Microsoft-Windows-WMI-Activity/Operational, som är tillgänglig under:

Loggboken Program och tjänstloggar>Microsoft>Windows>WMI-Activity>

Det finns flera typer av händelser som loggas.

Om den WmiPrvse.exe process som förbrukar hög CPU avslutas då och då och du redan vet vilka leverantörer som läses in kan följande händelse hjälpa dig att fastställa den aktiva WmiPrvse.exe process som är värd för leverantören i fråga.

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

Aktivera analys- och felsökningsloggar för aktivering av WMI-spårning

I Loggboken väljer du Visa>Visa analys- och felsökningsloggar för att aktivera felsökning och spårning för WMI-Activity.

Skärmbild som visar Drift i Loggboken.

Felsökning och spårning är inaktiverade som standard, och var och en av dem kan aktiveras manuellt genom att högerklicka på Spåra eller Felsöka och sedan välja Aktivera logg.

Kommentar

Om du aktiverar Visa analys- och felsökningsloggar kan du felsöka och spåra nästan alla händelsekällor och skapar ytterligare loggning. Därför måste detta inaktiveras när undersökningen är klar och kommer inte att användas längre.

Den här spårningen kan hållas aktiverad medan du observerar hög CPU-förbrukning av WmiPrvse.exe processen eller tillräckligt länge för att fånga beteendet för hög CPU-användning för att hålla loggarna rena och måttligt stora för enklare analys av spårningar.

  1. Exportera spårningarna genom att högerklicka på Spårning och välja Spara alla händelser som....

  2. Välj .xml eller .csv i Spara som-typ.

    Kommentar

    Du kan välja andra välbekanta format, .EVTX till exempel efter behov.

  3. Välj önskat språk för spårningsfilen.

  4. Du kan också välja att spara WMI-Activity Operational-händelserna separat, i önskat format så att du kan granska och analysera.

Granska WMI-spårningsfilerna

I WMI-spårningen ingår flera viktiga åtgärder, som alla ingår i inkommande WMI-frågor. Åtgärderna dokumenteras i IWbemServices-gränssnittet (wbemcli.h).

Några av de viktiga åtgärderna är:

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

Här är en av loggposterna från CSV-filen WMI-Tracing sparad:

Nivå Datum och tid Källa Händelse-ID Aktivitetskategori Beskrivning
Information 05-05-23 14:48 Microsoft-Windows-WMI-Activity 11 Ingen CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30693; OperationId = 30694; Åtgärd = Starta IWbemServices::ExecQuery – root\cimv2 : select * from Win32_Product; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520

En liknande händelse i XML-format ser ut så här:

 <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> 

Från ovanstående exempelåtgärdsutdata kan du få och förstå följande information:

  • En fråga initierades den: 2023-05-05 kl. 13:09:18
  • På datorn: 21H2W10M,
  • Från en klient-PID: 5484
  • Åtgärds-ID: 28089
  • Fråga: select * from Win32_Product
  • Namnområde: \\.\root\cimv2
  • Operation: IWbemServices::ExecQuery

Här är en annan logg:

Nivå Datum och tid Källa Händelse-ID Aktivitetskategori Beskrivning
Information 05-05-23 14:47 Microsoft-Windows-WMI-Activity 12 Ingen ProviderInfo för 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

Samma händelse i XML-format:

<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> 

Från åtgärdsutdata i det andra exemplet kan du få och förstå följande information:

  • Åtgärden CreateInstanceEnum initieras för användarens räkning med SID: UserID="S-1-5-21-00000000000-0000000000-000000000-1103"
  • Den 2023-05-05 kl 13:09
  • Exakt åtgärd: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Värd-ID: 556
  • Providernamn: MS_NT_EVENTLOG_PROVIDER
  • Providersökväg: %systemroot%\system32\wbem\ntevt.dll

Hitta klient-PID:erna som orsakar hög CPU-användning

Tanken med att granska den här loggfilen är att lista de åtgärder som är associerade med den identifierade WmiPrvse.exe PID som förbrukar hög CPU-användning, förstår inkommande frågor och vem som initierar dem (klientprocessen).

I exemplet ovan är det PID 552 som orsakar hög CPU-användning.

Från det andra exemplet på loggutdata initieras åtgärden CreateInstanceEnum för specifik WMI-klass Win32_NTLogEvent.

Mer information finns i Win32_NTLogEvent, som innehåller information om WMI-providern som är associerade med WMI-klassen.

Nu vet du vilken WMI-provider som finns iMS_NT_EVENTLOG_PROVIDER WmiPrvse.exe som orsakar hög CPU-användning, värd-ID (552) och WMI-klass (Win32_NTLogEvent) som efterfrågas av en viss klientprocess.

Beroende på vilket verktyg du använder för att granska spårningsfilerna kan du använda nödvändiga filter för att granska de åtgärder som är relaterade till Win32_NTLogEvent eller WmiPrvse.exe PID 552 eller värd-ID 552 eller ntevt.dll.

Med filtret som bara visar de rader eller åtgärder som innehåller "Win32_NTLogEvent" är resultatet:

Nivå Källa Händelse-ID Beskrivning
Information Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30641; OperationId = 30642; Åtgärd = Starta IWbemServices::CreateInstanceEnum – root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Information Microsoft-Windows-WMI-Activity 12 ProviderInfo för 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
Information Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30697; OperationId = 30698; Åtgärd = Starta IWbemServices::CreateInstanceEnum – root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Information Microsoft-Windows-WMI-Activity 12 ProviderInfo för 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

Från ovanstående åtgärder kan du få följande ytterligare information:

  • Tidsstämpel
  • Åtgärds-ID: 30642;
  • Den exakta åtgärden = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent;
  • Klientdator = 21H2W10M
  • Användare = CONTOSO\<UserName>
  • PID för klienten som har initierat frågan: 5484

Äntligen har du PID för en klientprocess 5484 som initierar en fråga till Win32_NTLogEvent. Det hanteras av providern MS_NT_EVENTLOG_PROVIDER och hanteras under WmiPrvse.exe PID 552, vilket orsakar hög CPU-användning.

När du har begränsat klient-PID:erna använder du något av följande verktyg för att hitta processnamnet.

Mer information om WmiMon

WMImon.exe är ett kraftfullt övervakningsverktyg som möjliggör spårning och övervakning av systemhändelser och resursanvändning för WMI-tjänsten.

Den fungerar som den viktiga funktionen för att identifiera WMI-anrop och frågor som görs av andra processer, samt tillhandahålla information om frågefrekvens, det användarkonto som används för frågorna och den begärda informationen.

Dessa data kan vara användbara för systemadministratörer som behöver felsöka prestandaproblem.

Om du vill samla in och analysera dessa data kan du följa de stegvisa anvisningarna:

  1. Identifiera PID för de WmiPrvSE.exe som använder CPU-användningen med hjälp av de metoder som beskrivs ovan.
  2. Ladda ned WMIMon.exe-verktyget från GitHub – luctalpe/WMIMon. Verktyget är att övervaka WMI-aktivitet i Windows.
  3. Extrahera innehållet i WMIMon_Binaries.zip-filen till en mapp på datorn.
  4. Öppna en kommandotolk som administratör och gå till mappen där du extraherade WMIMon-filerna.
  5. Kör WMIMon.exe-filen genom att ange WMIMon.exe i kommandotolken och trycka på Retur.
  6. WMIMon börjar nu övervaka de WMI-anrop som görs av processer i systemet, inklusive det som identifierades i steg 1.
  7. WMIMon visar information som klientprocess-ID, WMI-namnområdet som anropas av åtgärden, WMI-klassnamnet och det användarkonto som används för att göra begäran.
  8. Analysera utdata från WMIMon för att identifiera vilken process (es) som gör frekventa WMI-anrop och potentiellt orsakar hög CPU-användning.

Genom att följa dessa steg kan du effektivt använda WMIMon.exe för att övervaka WMI-aktivitet i systemet och identifiera eventuella prestanda- eller säkerhetsproblem som orsakas av överdriven WMI-användning.

Här är ett exempel:

Skärmbild som visar de data som samlas in av WMIMon.

Kommentar

Du kan exportera data som samlas in av WMIMon till en textfil genom att WMIMon.exe > Data.txt köra kommandot i kommandotolken. Tryck på Ctrl + C om du vill stoppa datainsamlingen.

Det kan finnas svåra situationer där det är omöjligt att begränsa en specifik klient-PID, ett program eller EXE. I sådana fall kan det vara användbart att överväga en gemensam entitet, till exempel ett användarnamn eller en associerad dator.

Det vill: förstå om användaren som initierar frågan är ett tjänstkonto eller associerat med ett visst program.

Andra lösningar

När du har slutfört den misstänkte kan du överväga att tillfälligt inaktivera tjänsten eller avinstallera programmet som är associerat med den och kontrollera om problemet med hög CPU-användning löses.

Här följer några scenarier där inaktivering av den kan verifiera dina observationer.

  • Övervaka program och tjänster
  • System Center Configuration Manager (SCCM) (policyhost.exe eller Monitoringhost.exe)
  • Powershell.exe skript som körs som innehåller WMI-frågor
  • Alla program från tredje part

Datainsamling

Om du behöver hjälp från Microsofts support rekommenderar vi att du samlar in informationen genom att följa stegen i Samla in information med hjälp av TSS för användarupplevelseproblem.

  1. Ladda ned TSS.zip och extrahera innehållet.

  2. Starta spårningen genom att köra följande cmdlet från en upphöjd PowerShell-kommandotolk. Håll spårningen igång när datorn har ett stort CPU-problem eller återskapar problemet.

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

    Kommentar

    Håll spårningen igång i mer än två minuter. Kontrollera att problemet återskapas under det här fönstret.

  3. Stoppa spårningen genom att följa anvisningarna i PowerShell-kommandotolken enligt TSS-verktygsuppsättningen.

Skriptet skapar en zip-fil som innehåller resultatet av alla spårningar och diagnostikinformationen. När ett supportärende har skapats kan den här filen laddas upp till den säkra arbetsytan för analys.