Seperti yang telah ditunjukkan oleh yang lain, kita dapat melihat dari tangkapan layar itu bahwa CPU yang bekerja sangat keras menghabiskan seluruh waktunya dalam mode kernel. (Warna merah.)
Menjalankan Powershell sebagai administrator, ketik:
Get-Process | Select Name, PrivilegedProcessorTime | `
Sort-Object PrivilegedProcessorTime -Descending
Proses di bagian atas daftar adalah proses yang saat ini menggunakan mode CPU paling kernel saat ini. Jika proses itu bukan "Sistem," maka Anda baru saja mengetahui proses mode pengguna apa yang menyebabkan penggunaan CPU ini. Jika proses dengan Waktu Prosesor Privileged tertinggi adalah Sistem, yang saya duga, maka itu sedikit lebih rumit.
Buka Process Explorer. Secara opsional, atur server simbol Anda. Pastikan Anda menjalankan dengan ketinggian UAC penuh. Klik kanan Sistem "proses" dan pergi ke Properties. Lalu buka tab Threads. Urutkan utas berdasarkan penggunaan CPU. Utas yang menyebabkan semua mode kernel ini bekerja seharusnya ada di sini. Jika Anda melihat modul yang tercantum di bawah Alamat Mulai, itu akan memberi Anda petunjuk tentang apa pekerjaan terkait. Jika itu NDIS.sys, misalnya, itu adalah driver antarmuka jaringan. Jika Anda mengatur server simbol, Anda akan melihat nama fungsi di dalam modul (kecuali modul tersebut bukan Microsoft,) jika tidak, Anda hanya akan melihat offset numerik dari alamat awal modul.
Atau, gunakan Xperf dari Windows Performance Toolkit untuk menginterupsi profil, DPC, dll.
xperf -on PROC_THREAD+LOADER+DPC+INTERRUPT
dan berhenti merekam dengan xperf -d logfile.etl
Xperf menggantikan alat Kernrate lama, dan dapat menjaring Anda beberapa data yang sangat rinci.
Ketika CPU melakukan pekerjaan dalam mode kernel, kebanyakan menjalankan rutinitas layanan interupsi. (ISR) Ketika terjadi interupsi, mode kerja pengguna ditangguhkan pada prosesor itu, dan CPU menjalankan ISR yang terdaftar pada interupsi itu. Jika Anda mendapati CPU Anda menghabiskan banyak waktu untuk gangguan ini, itu biasanya menunjukkan driver perangkat yang salah yang perlu diperbarui.
Apa yang mengganggu saya (tidak bermaksud kata-kata) tentang skenario ini adalah bahwa tampaknya seolah-olah apa pun utas kernel yang melakukan ini tampaknya disamakan dengan inti yang satu itu. Saya bertanya-tanya mengapa operator tampaknya hanya menjadwalkan utas untuk berjalan pada satu inti yang tampaknya sewenang-wenang. Jadi saya merasa bahwa kita perlu menemukan siapa pun yang menulis driver perangkat ini dan menunjukkan kepada mereka bagaimana melakukan DPC berulir, dan tidak secara eksplisit mengatur afinitas pada utas kernel, dll.