Per diagnosticare i problemi di utilizzo della CPU, si dovrebbe usare Event Tracing for Windows (ETW) per catturare i dati di campionamento della CPU / Profilo.
Per catturare i dati, installare il Windows Performance Toolkit , che fa parte del Windows SDK .
Il Windows 10 WPT può essere usato su Windows 8/Server 2012, Windows 8.1/Server 2012R2 e Windows 10/Server 2016. Se si usa ancora Windows 7, usare SDK/WPT con Build 15086 .
(tutte le altre voci possono essere deselezionate)
Ora eseguire WPRUI.exe
, selezionare First Level
, sotto Risorsa selezionare Utilizzo CPU e cliccare su avviare.
Ora catturare 1 minuto di utilizzo della CPU. Dopo 1 minuto, cliccare su Salva.
Ora analizzare il file ETL generato con il Performance Analyzer di Windows trascinando il grafico di CPU Usage (sampled)
su analysis pane
e ordinando le colonne come si vede nell'immagine:
All'interno di WPA, caricare i simboli di debug ed espandere la pila del processo SYSTEM. In questa demo, l'utilizzo della CPU proviene dal driver nVIDIA.
Nella demo seguente, l'utilizzo della CPU proviene dal driver Realtek NIC:
Quando vedete chiamate come ntoskrnl.exe! Vi KeTrimWorkerThreadRoutine, ntoskrnl.exe!Mm Verificatore TrimMemory, ntoskrnl.exe! Verificatore KeLeaveCriticalRegion, questo significa che il Driver Verifier è abilitato. Anche questo danneggia molto le prestazioni e causa un elevato utilizzo del SISTEMA. Disattivare Driver Verifier e riavviare.
In questa demo, il driver iai2ce.sys
(Intel Serial IO GPIO Controller driver) lo provoca:
In questo esempio, l'utilizzo della CPU proviene dal file rtsuvc.sys
che sembra essere il Realtek UVC webcam Driver
Questa demo mostra che il driver Bitdefender ignis.sys
Nell'esempio seguente, l'utilizzo della CPU è valutato dal driver di rete broadcom bcmwl664.sys
Quando si vede ntoskrnl.exe!MiZeroWorkerPages
come causa, è più complicato. Ciò significa che la funzione del kernel che azzera la memoria prima di poterla riutilizzare causa l'elevato utilizzo della CPU:
Non c'è un modo reale di rilevare quale processo lo causi, ma so che Chrome può causarlo se si ha l'accelerazione hardware abilitata in Chrome. Quindi se vedete questo e usate Chrome, disattivate l'accelerazione hardware in Chrome.
Quando vedete questi ntoskrnl.exe!RtlpGenericRandomPatternWorker, ntoskrnl.exe!RtlpTestMemoryRandomUp chiama
l'uso della CPU viene dal Kernel per testare la memoria per problemi (memtest). Questo utilizzo viene attivato tramite il task di manutenzione inattivo di Windows 8.1/10. È possibile utilizzare il Task Scheduler per disattivare il task inattivo.
In Windows 10, il task si chiama RunFullMemoryDiagnostics sotto Microsoft > Windows > MemoryDiagnostic > RunFullMemoryDiagnostic.
In questo caso, l'utilizzo della CPU sembra provenire dalla funzione Data Deduplication
Feature (dedup.sys!DdpPostCreate
) di Windows Server:
In questa demo, l'utilizzo della CPU è causato dal driver della scheda WIFI athrx.sys
Cerca un aggiornamento del driver se lo vedi.
Nella seguente demo, è coinvolto un driver citrix:
Contattate il vostro IT per sapere come risolvere i problemi Citrix.
In questa demo, la funzione usbhub.sys!UsbhPortRecycle
causa l'utilizzo della CPU:
Modifica delle porte USB2.0 a 1.1 velocità o collegamento di unità USB ad altre USB 2. 0 porte aiutate per alcuni utenti.
In questo caso, una piccola quantità di utilizzo del SISTEMA deriva dal driver Acronis tdrpm251.sys
:
In questa demo, l'utilizzo della CPU ntoskrnl.exe!KeAcquireSpinLockRaiseToDpc
e ntoskrnl.exe!KeReleaseSpinLock
.
quindi un driver sta utilizzando SpinLocks molto pesantemente. Disattivare alcuni dispositivi / driver fino a quando non si vede uno che lo causa.
In questo caso, l'utilizzo della CPU è causato dal driver L1C62x64.sys
Questo è il driver qualcomm atheros AR8171/8175 PCI-E gigabit Ethernet
. Quindi aggiornate il driver se lo vedete nella pila.
In questo caso, l'utilizzo della CPU viene dalla scansione del file host (netbt.sys! DelayedScanLmHostFile)
assicuratevi che il vostro file host non sia troppo grande per evitare questo utilizzo.
In questo caso, l'utilizzo della CPU viene da SRTSP64.SYS
di symantec.
Aggiornate il vostro prodotto symantec usato all'ultima versione.
In questo caso, l'utilizzo della CPU proviene dal driver della GPU AMD (atikmdag.sys)
se vedete questo, andate sul sito AMD e prendete l'ultimo driver per la vostra scheda AMD.
Qui, i driver TMXPFlt.sys e VsapiNt.sys causano l'elevato utilizzo della CPU.
Da quello che vedo, questi file fanno parte della suite AV di Trend Micro. Aggiornare lo strumento o rimuoverlo.
In questo esempio, l'utilizzo della CPU deriva dalla funzione ntoskrnl.exe!MmGetPageFileInformation
Questa funzione ottiene informazioni sul file di pagina.
Descrizione di routine: Questa routine restituisce informazioni sui file di paging attualmente attivi.
Disattivare il file di paging, riavviare e riattivarlo e vedere se questo lo corregge. Inoltre, rimuovendo i servizi Intel (ad esempio Intel Content Protection HECI Service) sembra averlo corretto per un utente .
Qui, si può vedere che il driver Netwtw04.sys
(driver Intel Wifi) chiama la funzione flushCompleteAllPendingFlushRequests
e questo causa un elevato utilizzo della CPU.
Poiché i simboli di debug vengono caricati, viene utilizzato il driver della posta in arrivo di Windows. Solo qui possiamo ottenere i simboli di debug per vedere il calltack con il nome della funzione flushCompleteAllPendingFlushRequests
.
Qui, si dovrebbe installare l'ultimo driver di Intel per correggerlo.
Il caso più complicato di utilizzo del SISTEMA è l'utilizzo di ACPI.sys nel calltack:
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
questo è estremamente difficile da debuggare. In un sysinternals topic , ho elencato alcuni consigli:
- assicurarsi che la CPU non si surriscaldi a causa della polvere nella ventola della CPU
- aggiornare o ri-flash lo (stesso) BIOS/UEFI
- caricare le impostazioni predefinite del BIOS/UEFI
- assicurarsi che la batteria non sia danneggiata, rimuovere la batteria dal notebook o disattivare la batteria nel device manager.
- cambiare jumper su HDD caddy se si è sostituito il DVD/Blue-Ray Drive con un Caddy per installare un SSD accanto al vecchio HDD
Nella seguente demo, il driver Intel HD igdkmd64.sys
nella versione .4574 per l'Intel HD 630 causa il problema:
&005
La soluzione è di aggiornare al driver con la versione di almeno . 4590.
Nel seguente caso, l'utilizzo della CPU del processo SYSTEM è causato dal driver stdriverx64.sys
&005
Questo sembra essere un [ driver di streaming audio ]&003. Quindi aggiornare questo software/driver se lo vedete in WPA.
Se vedete un driver chiamato risdxc64.sys
nel calltack di SYSTEM che causa l'elevato utilizzo della CPU, aggiornate il Ricoh PCIe SDXC/MMC Host Controller driver o disabilitate il lettore di schede SD nel device manager se nessun aggiornamento del driver lo corregge.
&005
Questo lettore di schede SD sembra essere integrato in molti dispositivi Lenovo.
L'utente @stevemidgley ha mostrato un nuovo problema di maggiore utilizzo della CPU con Wdf01000.sys!FxSystemWorkItem::_WorkItemThunk
&005
Qui è possibile vedere un driver UDE.sys che lo causa.
Nel simbolo hub
&005 &005
vedo che appartiene al driver del modem e i dati PNP della traccia mostra Fibocom L850-GL
(LTE Modem) come possibile dispositivo:
&005
E la soluzione è quella di disattivare il modem e il dispositivo composito USB in device manager.