Um Probleme mit der CPU-Auslastung zu diagnostizieren, sollten Sie die Ereignisablaufverfolgung für Windows (ETW) verwenden, um CPU-Abtastdaten/Profil zu erfassen.
Um die Daten zu erfassen, installieren Sie das Windows Performance Toolkit , das Teil des Windows SDK ist.
Das Windows 10 WPT kann unter Windows 8/Server 2012, Windows 8.1/Server 2012R2 und Windows 10/Server 2016 verwendet werden. Wenn Sie noch Windows 7 verwenden, verwenden Sie das SDK/WPT mit Build 15086 .
(alle anderen Einträge können abgewählt werden)
Führen Sie nun WPRUI.exe
aus, wählen Sie First Level
, wählen Sie unter Ressource CPU-Auslastung und klicken Sie auf Start.
Erfassen Sie nun 1 Minute der CPU-Auslastung. Klicken Sie nach 1 Minute auf Speichern.
Jetzt analysieren Sie die generierte ETL-Datei mit dem Windows Performance Analyzer , indem Sie das Diagramm CPU Usage (sampled)
per Drag & Drop auf die analysis pane
ziehen und die Spalten wie im Bild angeordnet werden:
Inside WPA, laden Sie die Debug-Symbole und erweitern Sie Stack des SYSTEM-Prozesses. In dieser Demo kommt die CPU-Auslastung vom nVIDIA-Treiber.
In der folgenden Demo kommt die CPU-Auslastung vom Realtek NIC-Treiber:
Wenn Sie Aufrufe wie ntoskrnl.exe sehen! Vi KeTrimWorkerThreadRoutine, ntoskrnl.exe!Mm Verifier TrimMemory, ntoskrnl.exe! Verifier KeLeaveCriticalRegion, dies bedeutet, dass Sie Driver Verifier aktiviert haben. Dies schadet ebenfalls sehr der Leistung und verursacht eine hohe SYSTEM-Nutzung. Deaktivieren Sie Driver Verifier ](https://msdn.microsoft.com/en-us/windows/hardware/drivers/devtest/driver-verifier#how_to_control_dv) und starten Sie neu.
In dieser Demo verursacht der Treiber iai2ce.sys
(Intel Serial IO GPIO Controller-Treiber) dies:
In diesem Beispiel kommt die CPU-Auslastung aus der Datei rtsuvc.sys
, die die Realtek UVC webcam Driver
Diese Demo zeigt, dass der Bitdefender-Treiber ignis.sys
Im folgenden Beispiel, die CPU-Auslastung wird durch den Broadcom-Netzwerktreiber bcmwl664.sys
Wenn Sie ntoskrnl.exe!MiZeroWorkerPages
als Ursache sehen, ist es kniffliger. Das bedeutet, dass die Funktion des Kernels, die den Speicher auf Null setzt, bevor er wieder verwendet werden kann, die hohe CPU-Auslastung verursacht:
Es gibt keine wirkliche Möglichkeit, herauszufinden, welcher Prozess dies verursacht, aber ich weiß, dass Chrome dies verursachen kann, wenn Sie in Chrome Hardwarebeschleunigung aktiviert haben. Wenn Sie dies also sehen und Chrome verwenden, schalten Sie die Hardwarebeschleunigung in Chrome aus.
Wenn Sie diese ntoskrnl.exe!RtlpGenericRandomPatternWorker sehen, ruft ntoskrnl.exe!RtlpTestMemoryRandomUp
auf, kommt die CPU-Auslastung vom Kernel, um den Speicher auf Probleme zu testen (memtest). Diese Nutzung wird über die Idle-Wartungsaufgabe von Windows 8.1/10 ausgelöst. Sie können den Idle-Task mit dem Taskplaner deaktivieren.
In Windows 10 heißt der Task RunFullMemoryDiagnostics unter Microsoft > Windows > MemoryDiagnostic > RunFullMemoryDiagnostic.
In diesem Fall scheint die CPU-Auslastung vom Data Deduplication
Feature (dedup.sys!DdpPostCreate
) von Windows Server zu kommen:
In dieser Demo wird die CPU-Auslastung durch den WIFI-Karten-Treiber verursacht athrx.sys
Suchen Sie nach einem Treiber-Update, wenn Sie dies sehen.
In der folgenden Demo ist ein Citrix-Treiber beteiligt:
Wenden Sie sich also an Ihre IT-Abteilung, um zu erfahren, wie Sie Citrix-Probleme lösen können.
In dieser Demo verursacht die Funktion usbhub.sys!UsbhPortRecycle
die CPU-Auslastung:
Ändern der USB2.0-Ports auf 1.1-Geschwindigkeit oder Anschließen von USB-Laufwerken an andere USB 2. In diesem Fall kommt ein kleiner Teil der SYSTEM-Nutzung vom Acronis-Treiber tdrpm251.sys
:
In dieser Demo verursacht die CPU-Nutzung ntoskrnl.exe!KeAcquireSpinLockRaiseToDpc
und ntoskrnl.exe!KeReleaseSpinLock
.
, so dass ein Treiber SpinLocks sehr stark benutzt. Deaktivieren Sie einige Geräte/Treiber, bis Sie einen sehen, der dies verursacht.
In diesem Fall wird die CPU-Auslastung durch den Treiber L1C62x64.sys
Dies ist der Treiber qualcomm atheros AR8171/8175 PCI-E gigabit Ethernet
. Aktualisieren Sie also den Treiber, wenn Sie ihn im Stack sehen.
Hier wird die CPU-Auslastung durch das Scannen der Host-Datei (netbt.sys! DelayedScanLmHostFile) verursacht
Stellen Sie sicher, dass Ihre Host-Datei nicht zu groß ist, um diese Nutzung zu vermeiden.
In diesem Fall stammt die CPU-Auslastung von SRTSP64.SYS
von symantec.
Aktualisieren Sie Ihr gebrauchtes symantec-Produkt auf die neueste Version.
In diesem Fall kommt die CPU-Auslastung vom AMD-GPU-Treiber (atikmdag.sys)
Wenn Sie dies sehen, gehen Sie zur AMD-Website und holen Sie sich den neuesten Treiber für Ihre AMD-Karte.
Hier verursachen die Treiber TMXPFlt.sys und VsapiNt.sys die hohe CPU-Auslastung.
Nach dem, was ich sehe, sind diese Dateien Teil der Trend Micro AV-Suite. Aktualisieren Sie das Tool oder entfernen Sie es.
In diesem Beispiel kommt die CPU-Auslastung aus der Funktion ntoskrnl.exe!MmGetPageFileInformation
Diese Funktion holt Informationen über die Auslagerungsdatei.
Routinebeschreibung: Diese Routine gibt Informationen über die derzeit aktiven Auslagerungsdateien zurück.
Deaktivieren Sie die Auslagerungsdatei, starten Sie sie neu und aktivieren Sie sie wieder, und schauen Sie, ob das Problem dadurch behoben wird. Auch das Entfernen von Intel-Diensten (z.B. Intel Content Protection HECI Service) scheint es für einen Benutzer zu beheben .
Hier können Sie sehen, dass der Treiber Netwtw04.sys
(Intel Wifi-Treiber) die Funktion flushCompleteAllPendingFlushRequests
aufruft und dies eine hohe CPU-Auslastung verursacht.
Da die Debug-Symbole geladen werden, wird der Windows-Posteingangstreiber verwendet. Nur hier können wir die Debug-Symbole dazu bringen, den Callstack mit dem Funktionsnamen flushCompleteAllPendingFlushRequests
zu sehen.
Hier sollten Sie den neuesten Treiber von Intel installieren installieren, um das Problem zu beheben.
Der komplizierteste Fall von SYSTEM-Nutzung ist die Verwendung von ACPI.sys im Callstack:
Line #, DPC/ISR, Module, Stack, Count, Process, Weight (in view) (ms), TimeStamp (s), % Weight
6, , , | |- ACPI.sys!ACPIWorkerThread, 40246, , 39.992,941063, , 4,13
7, , , | | ACPI.sys!RestartCtxtPassive, 40246, , 39.992,941063, , 4,13
8, , , | | ACPI.sys!InsertReadyQueue, 40246, , 39.992,941063, , 4,13
9, , , | | ACPI.sys!RunContext, 40246, , 39.992,941063, , 4,13
10, , , | | ntoskrnl.exe!KeReleaseSpinLock, 40246, , 39.992,941063, , 4,13
11, , , | | ntoskrnl.exe!KiDpcInterrupt, 40246, , 39.992,941063, , 4,13
12, , , | | ntoskrnl.exe!KiDispatchInterruptContinue, 40246, , 39.992,941063, , 4,13
13, , , | | ntoskrnl.exe!KxRetireDpcList, 40246, , 39.992,941063, , 4,13
14, , , | | ntoskrnl.exe!KiRetireDpcList, 40246, , 39.992,941063, , 4,13
15, , , | | |- ntoskrnl.exe!KiExecuteAllDpcs, 40198, , 39.945,173325, , 4,13
16, , , | | | |- ACPI.sys!ACPIInterruptDispatchEventDpc, 27565, , 27.408,930428, , 2,83
17, , , | | | | |- ACPI.sys!ACPIGpeEnableDisableEvents, 24525, , 24.384,921620, , 2,52
18, , , | | | | | ACPI.sys!ACPIWriteGpeEnableRegister, 24525, , 24.384,921620, , 2,52
19, , , | | | | | |- hal.dll!HalpAcpiPmRegisterWrite, 24421, , 24.281,015516, , 2,51
20, , , | | | | | | |- hal.dll!HalpAcpiPmRegisterWritePort, 24166, , 24.027,316013, , 2,48
dies ist extrem schwierig zu debuggen. In einem sysinternals-Thema habe ich einige Ratschläge aufgelistet:
- stellen Sie sicher, daß die CPU nicht durch Staub im CPU-Lüfter überhitzt wird
- aktualisieren Sie das (gleiche) BIOS/UEFI
oder lassen Sie es neu blinken
- laden Sie die Standard-BIOS/UEFI-Einstellungen
- stellen Sie sicher, daß der Akku nicht beschädigt ist, entfernen Sie den Akku aus dem Notebook oder deaktivieren Sie den Akku im Gerätemanager.
- Jumper ändern am HDD-Caddy wenn Sie das DVD/Blue-Ray-Laufwerk durch einen Caddy ersetzt haben, um eine SSD neben Ihrer alten HDD zu installieren
In der folgenden Demo verursacht der Intel HD-Treiber igdkmd64.sys
in der Version .4574 für die Intel HD 630 das Problem:
Die Lösung ist Update auf Treiber mit mindestens der Version . 4590.
Im folgenden Fall wird die CPU-Auslastung des SYSTEM-Prozesses durch den Treiber stdriverx64.sys
verursacht Dies scheint ein Audio-Streaming-Treiber zu sein. Aktualisieren Sie also diese Software/Treiber, wenn Sie dies in WPA sehen.
Wenn Sie einen Treiber namens risdxc64.sys
im Callstack des SYSTEMs sehen, der die hohe CPU-Auslastung verursacht, aktualisieren Sie den Ricoh PCIe SDXC/MMC Host Controller-Treiber oder deaktivieren Sie den SD-Kartenleser im Gerätemanager, wenn kein Treiber-Update ihn behebt.
Dieser SD-Kartenleser scheint in viele Lenovo-Geräte eingebaut zu sein.
Der Benutzer @stevemidgley zeigte mit Wdf01000.sys!FxSystemWorkItem::_WorkItemThunk
ein neues Problem höherer CPU-Auslastung. Hier sehen Sie einen Treiber UDE.sys, der dies verursacht.
Im Symbol Hub
Ich kann sehen, dass er zum Modemtreiber gehört und die PNP-Daten des Trace zeigt Fibocom L850-GL
(LTE-Modem) als mögliches Gerät:
Und die Lösung ist, das Modem und das USB-Verbundgerät im Gerätemanager zu deaktivieren.