CPU 사용 문제를 진단하려면 Windows 용 이벤트 추적 (ETW)을 사용하여 CPU 샘플링 데이터 / 프로파일을 캡처해야합니다.
데이터를 캡처하려면 Windows SDK의 일부인 Windows Performance Toolkit을 설치하십시오 .
Windows 10 WPT는 Windows 8 / Server 2012, Windows 8.1 / Server 2012R2 및 Windows 10 / Server 2016에서 사용할 수 있습니다. Windows 7을 계속 사용하는 경우 Build 15086과 함께 SDK / WPT를 사용하십시오 .
(다른 모든 항목은 선택 해제 할 수 있습니다)
이제 리소스 선택 CPU 사용 에서 실행 WPRUI.exe
을 선택 하고 시작을 클릭하십시오 .First Level
이제 1 분의 CPU 사용량을 캡처하십시오. 1 분 후 저장을 클릭 하십시오 .
이제 그래프를 끌어다 놓은 다음 그림과 같이 열을 정렬하여 Windows 성능 분석기 로 생성 된 ETL 파일을 분석 하십시오.CPU Usage (sampled)
analysis pane
WPA 내부 에서 디버그 기호를로드 하고 SYSTEM 프로세스의 스택을 펼치십시오. 이 데모에서는 CPU 사용량이 nVIDIA 드라이버에서 제공됩니다.
다음 데모에서는 CPU 사용량이 Realtek NIC 드라이버에서 제공됩니다.
ntoskrnl.exe 와 같은 호출을 볼 때 ! Vi KeTrimWorkerThreadRoutine, ntoskrnl.exe! Mm Verifier TrimMemory, ntoskrnl.exe! Verifier KeLeaveCriticalRegion , 이것은 Driver Verifier가 활성화되었음을 의미합니다. 또한 성능이 많이 저하되고 높은 시스템 사용량이 발생합니다. Driver Verifier를 비활성화 하고 재부팅하십시오.
이 데모에서는 드라이버 iai2ce.sys
(Intel Serial IO GPIO Controller 드라이버)가 다음을 수행합니다.
이 예에서, CPU 사용량이 파일에서 제공 rtsuvc.sys
것 같다Realtek UVC webcam Driver
이 데모는 Bitdefender 드라이버가 ignis.sys
다음 예에서 Broadcom 네트워크 드라이버가 CPU 사용량을 계산합니다. bcmwl664.sys
당신이 볼 때 ntoskrnl.exe!MiZeroWorkerPages
원인으로,이 까다 롭습니다. 다시 사용하기 전에 메모리를 0으로 만드는 커널의 기능은 CPU 사용량이 높다는 것을 의미합니다.
어떤 프로세스로 인해 프로세스가 발생했는지 감지하는 실제 방법은 없지만 Chrome에서 하드웨어 가속을 사용하도록 설정하면 Chrome에서 문제를 일으킬 수 있다는 것을 알고 있습니다. 따라서이 정보를보고 Chrome을 사용하는 경우 Chrome에서 하드웨어 가속을 끄십시오.
ntoskrnl.exe! RtlpGenericRandomPatternWorker, ntoskrnl.exe! RtlpTestMemoryRandomUp 호출 을 볼 때
CPU 사용량은 커널에서 발생하여 메모리 문제를 테스트합니다 (memtest). 이 사용은 Windows 8.1 / 10의 유휴 유지 관리 작업을 통해 트리거됩니다. 작업 스케줄러를 사용하여 유휴 작업을 비활성화 할 수 있습니다.
Windows 10에서는이 작업을 Microsoft> Windows> MemoryDiagnostic> RunFullMemoryDiagnostic에서 RunFullMemoryDiagnostics라고 합니다.
이 경우 CPU 사용량 은 Windows Server 의 Data Deduplication
기능 ( dedup.sys!DdpPostCreate
) 에서 비롯된 것 같습니다 .
이 데모에서 CPU 사용량은 WIFI 카드 드라이버로 인해 발생합니다 athrx.sys
이 드라이버 업데이트가 있으면 검색하십시오.
다음 데모에서는 citrix 드라이버가 사용됩니다.
따라서 Citrix 문제를 해결하는 방법에 대해서는 IT 부서에 문의하십시오.
이 데모에서이 함수 usbhub.sys!UsbhPortRecycle
는 CPU 사용을 유발합니다.
USB2.0 포트를 1.1 속도로 변경 하거나 USB 드라이브를 다른 USB 2.0 포트에 연결하면 일부 사용자에게 도움이되었습니다.
이 경우 소량의 SYSTEM 사용량이 Acronis 드라이버에서 제공됩니다 tdrpm251.sys
.
이 데모에서는 CPU 사용량 ntoskrnl.exe!KeAcquireSpinLockRaiseToDpc
과 ntoskrnl.exe!KeReleaseSpinLock
.
그래서 드라이버는 SpinLocks를 매우 많이 사용 하고 있습니다. 원인이 될 때까지 일부 장치 / 드라이버를 비활성화하십시오.
이 경우 CPU 사용은 드라이버에 의해 발생합니다 L1C62x64.sys
이것은 qualcomm atheros AR8171/8175 PCI-E gigabit Ethernet
드라이버입니다. 따라서 스택에 드라이버가 있으면 업데이트하십시오.
여기서 CPU 사용량은 호스트 파일 (netbt.sys! DelayedScanLmHostFile)을 스캔하여 발생합니다.
이 사용을 피하기 위해 호스트 파일이 너무 크지 않은지 확인하십시오.
이 경우 CPU 사용은 SRTSP64.SYS
symantec에서 나옵니다 .
사용 된 symantec 제품을 최신 버전으로 업데이트하십시오.
여기서 CPU 사용량은 AMD GPU 드라이버 (atikmdag.sys)에서 제공됩니다.
이 메시지가 나타나면 AMD 사이트로 이동하여 AMD 카드의 최신 드라이버를 구하십시오.
여기서 드라이버 TMXPFlt.sys 및 VsapiNt.sys는 높은 CPU 사용량을 유발합니다.
내가 본 것에서이 파일은 Trend Micro AV 제품군의 일부입니다. 도구를 업데이트하거나 제거하십시오.
이 예에서 CPU 사용량은 함수에서 비롯됩니다. ntoskrnl.exe!MmGetPageFileInformation
이 함수는 페이지 파일에 대한 정보를 얻습니다.
루틴 설명 :이 루틴은 현재 활성화 된 페이징 파일에 대한 정보를 반환합니다.
페이지 파일을 비활성화하고 다시 부팅 한 다음 다시 활성화하여 문제가 해결되는지 확인하십시오. 또한 인텔 서비스 (예 : 인텔 콘텐츠 보호 HECI 서비스) 를 제거하면 사용자를 위해 수정 된 것으로 보입니다 .
여기서 드라이버 Netwtw04.sys
(Intel Wifi 드라이버)가 함수를 호출하면 flushCompleteAllPendingFlushRequests
CPU 사용량이 높아지는 것을 알 수 있습니다.
디버그 기호가로드되기 때문에 Windows받은 편지함 드라이버가 사용됩니다. 여기서 만 함수 이름으로 콜 스택을 볼 디버그 심볼을 얻을 수 있습니다 flushCompleteAllPendingFlushRequests
.
여기에서 수정하려면 인텔에서 최신 드라이버를 설치 해야 합니다.
가장 복잡한 SYSTEM 사용 사례는 콜 스택에서 ACPI.sys 사용입니다.
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
이것은 디버깅하기가 매우 어렵습니다. A의 시스 인 터널 주제 , 나는 몇 가지 조언을 나열 :
- CPU 팬의 먼지로 인해 CPU가 과열되지 않도록하십시오
- (동일한) BIOS / UEFI 업데이트 또는 다시 플래시
- 기본 BIOS / UEFI 설정로드
- 배터리가 손상되지 않았는지 확인하거나 노트북에서 배터리를 제거하거나 장치 관리자에서 배터리를 비활성화하십시오.
- DVD / Blue-Ray 드라이브를 캐디로 교체하여 기존 HDD 옆에 SSD를 설치 한 경우 HDD 캐디의 점퍼 변경
다음 데모에서는 igdkmd64.sys
Intel HD 630 용 버전 .4574 의 Intel HD 드라이버 가 문제를 일으 킵니다.
해결책은 .4590 이상의 버전 으로 드라이버 로 업데이트하는 것입니다.
다음과 같은 경우 SYSTEM 프로세스의 CPU 사용량은 드라이버로 인해 발생합니다. stdriverx64.sys
이것은 오디오 스트리밍 드라이버 인 것 같습니다 . WPA에이 소프트웨어 / 드라이버가 있으면이를 업데이트하십시오.
risdxc64.sys
시스템의 콜 스택에서 높은 CPU 사용량을 유발 하는 드라이버가 표시 되면 Ricoh PCIe SDXC / MMC 호스트 컨트롤러 드라이버를 업데이트하거나 드라이버 업데이트가 없으면 장치 관리자에서 SD 카드 리더를 비활성화하십시오.
이 SD 카드 리더는 많은 Lenovo 장치에 내장 된 것 같습니다.
사용자 @stevemidgley는 Wdf01000.sys!FxSystemWorkItem::_WorkItemThunk
여기에서 드라이버 UDE.sys의 원인이됩니다.
심볼 허브에서
모뎀 드라이버와 트레이스 쇼의 PNP 데이터 Fibocom L850-GL
(LTE 모뎀)가 가능한 장치 임을 알 수 있습니다.
해결책은 장치 관리자에서 모뎀 및 USB 복합 장치를 비활성화하는 것입니다.