Saya memiliki sistem HP ProLiant DL380 G7 menggunakan 2 CPU 6-core, dengan Hyper-threading diaktifkan, untuk total 24 CPU logis (seperti yang terlihat oleh Windows).
Saat menjalankan aplikasi kami, utilisasi sistem CPU total baik, tetapi salah satu dari 24 CUP dipatok 100%:
Sunting: Ini adalah data PerfMon untuk proses Sistem selama ini, dan untuk Prosesor dengan pemanfaatan tinggi:
Apakah ini normal? Jika tidak, apakah ada cara untuk mengidentifikasi proses mana yang menggunakan CPU logis itu? Windows PerfMon, ResMon, Task Manager, dan Process Explorer tidak membantu, selain mengidentifikasi bahwa CPU berada pada 100%.
windows-server-2008-r2
performance
cpu-usage
Patrick Cuff
sumber
sumber
Jawaban:
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:
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.
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.
sumber
Tampilkan kolom "Waktu CPU" pada tab "Detail" di "Pengelola Tugas" dan cari proses dengan jumlah waktu CPU yang terus meningkat. Itu proses Anda yang terjepit. Itu harus menggunakan sekitar 4,17% CPU terus-menerus.
sumber
Tampaknya semua waktu Kernel, bisa Interupsi, mereka hanya bisa ditangani oleh satu CPU.
sumber
Cari proses dengan utilisasi CPU konstan ~ 4% (= 1/24 dari total CPU yang tersedia). Itu harus menjadi yang terus menerus mengambil satu CPU.
sumber