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で使用できます。Windows7を引き続き使用する場合は、ビルド15086でSDK / WPTを使用します。
(他のすべてのエントリは選択解除できます)
ここでWPRUI.exe
、実行、選択First Level
、リソースの下でCPU使用率を選択し、開始をクリックします。
次に、1分間のCPU使用率をキャプチャします。1分後、[ 保存 ]をクリックします。
次に、図に表示されるようにグラフをにドラッグアンドドロップし、列を並べて、生成されたETLファイルをWindows Performance Analyzerで分析します。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
原因として見ると、よりトリッキーです。これは、再度使用する前にメモリをゼロにするカーネルの機能により、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使用率が高くなります。
私が見るところ、これらのファイルはトレンドマイクロのAVスイートの一部です。ツールを更新するか、削除します。
この例では、CPU使用率は関数から取得されます ntoskrnl.exe!MmGetPageFileInformation
この関数は、ページファイルに関する情報を取得します。
ルーチンの説明:このルーチンは、現在アクティブなページングファイルに関する情報を返します。
ページファイルを無効にし、再起動してから再度有効にして、修正されるかどうかを確認します。また、Intelサービス(Intel Content Protection HECIサービスなど)を削除すると、ユーザーにとっては修正されたようです。
ここでは、ドライバーNetwtw04.sys
(Intel Wifiドライバー)が関数flushCompleteAllPendingFlushRequests
を呼び出しているため、CPU使用率が高くなっていることがわかります。
デバッグシンボルがロードされるため、Windows受信トレイドライバーが使用されます。ここでのみ、デバッグシンボルを取得して、関数名を持つコールスタックを確認できますflushCompleteAllPendingFlushRequests
。
ここで、Intelから最新のドライバーをインストールして修正する必要があります。
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
これはデバッグが非常に困難です。でSysinternalsのトピック、私はいくつかのアドバイスを記載されています:
- CPUファンのほこりのためにCPUが過熱しないことを確認してください
- (同じ)BIOS / UEFIを更新または再フラッシュする
- デフォルトのBIOS / UEFI設定をロードする
- バッテリーが破損していないことを確認し、ノートブックからバッテリーを取り外すか、デバイスマネージャーでバッテリーを無効にします。
- 古いHDDの隣にSSDをインストールするためにDVD / Blue-Rayドライブをキャディに交換した場合は、HDDキャディのジャンパーを変更します
次のデモではigdkmd64.sys
、Intel HD 630用のバージョン.4574のIntel HDドライバーが問題の原因です。
解決策は、少なくとも.4590のバージョンのドライバーに更新することです。
次の場合、SYSTEMプロセスのCPU使用率はドライバーによって引き起こされます stdriverx64.sys
これは、オーディオストリーミングドライバーのようです。WPAでこれが表示される場合は、このソフトウェア/ドライバーを更新してください。
risdxc64.sys
CPUの使用率が高くなるSYSTEMのコールスタックで呼び出されるドライバーが表示される場合、Ricoh PCIe SDXC / MMCホストコントローラードライバーを更新するか、ドライバーの更新で修正されない場合はデバイスマネージャーでSDカードリーダーを無効にします。
このSDカードリーダーは、多くのLenovoデバイスに組み込まれているようです。
ユーザー@stevemidgleyは、CPU使用率が高くなるという新しい問題を示しました。 Wdf01000.sys!FxSystemWorkItem::_WorkItemThunk
ここで、ドライバーUDE.sysが原因であることがわかります。
シンボルハブ内
私はそれがモデムドライバに属し、トレースのPNPデータがFibocom L850-GL
可能なデバイスとして(LTEモデム)を示していることがわかります:
そして解決策は、デバイスマネージャーでモデムとUSB複合デバイスを無効にすることです。