Kadang-kadang saya menemukan server (Windows 2003 dan 2008) dengan waktu interupsi prosesor% tinggi. Apakah ada cara untuk melihat program atau perangkat apa yang menyebabkan interupsi?
Kadang-kadang saya menemukan server (Windows 2003 dan 2008) dengan waktu interupsi prosesor% tinggi. Apakah ada cara untuk melihat program atau perangkat apa yang menyebabkan interupsi?
Jawaban:
Setelah menggali dokumentasi (berdasarkan jawaban lain di sini), inilah proses yang akhirnya saya gunakan:
Tangkap log ETW masalah
Cara termudah untuk melakukan ini adalah menggunakan Windows Performance Recorder . Saya tidak yakin kapan pertama kali muncul, tetapi tampaknya dibangun pada versi Windows terbaru. Atur profil menjadi CPU usage
.
atau, menggunakan prompt perintah yang ditinggikan, navigasikan ke folder yang berisi itu dan gunakan alat baris perintah xperf:
xperf -on base+interrupt+dpc
Catatan, Anda harus menutup Process Monitor atau aplikasi lain yang menggunakan ETW atau Anda akan mendapatkan kesalahan berikut: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
Hentikan pelacakan / simpan log
xperf -d interrupt_trace.etl
Buka jejak dalam Windows Performance Analyzer
(bagian dari Windows Performance Toolkit); beberapa tempat menyebutkan menggunakan xperfview
sebagai gantinya.
Rentangkan Computation
-> CPU Usage (Sampled)
-> DPC and ISR Usage by Module, Stack
, klik kanan danadd graph to analysis view
Ini menunjuk langsung ke pengemudi yang bersangkutan. Dalam hal ini, HDAudBus.sys menggunakan 10,82% cpu saya yang konstan melalui interupsi, yang persis seperti yang ditunjukkan oleh Process Explorer kepada saya.
Jika Anda dapat menangani alat sistem tingkat rendah;
Windows Performance Analyzer (WPA)
Windows Performance Analyzer (WPA) adalah seperangkat alat pemantauan kinerja yang digunakan untuk menghasilkan profil kinerja yang mendalam dari sistem operasi dan aplikasi Microsoft Windows.
Setelah Anda belajar cara menggunakan xperf; Periksa;
Tindakan DPC / ISR menghasilkan laporan teks yang merangkum berbagai metrik tentang DPC dan ISR. Penggunaan untuk tindakan ini adalah:
Salin Kode -a dpcisr [-dpc -isr-ringkasan ]interval [n] -bucket [n] -rentang T1 T2]
Pilihan
Deskripsi
dpc
Tampilkan statistik untuk DPC saja
isr
Tampilkan statistik hanya untuk ISR
ringkasan
Tampilkan ringkasan laporan
interval [dt]
Tampilkan laporan penggunaan untuk interval dt, standarnya adalah 1 detik
ember [dt]
Tampilkan histogram untuk interval dt, standarnya adalah 2 detik
kisaran T1 T2
Tampilkan penundaan antara T1 dan T2
If no data type is specified, default is to show report for both DPC
dan ISR. Jika tidak ada jenis laporan yang ditentukan, standarnya adalah untuk mencetak ketiga jenis laporan.
Inilah artikel terbaik yang saya temukan tentang cara melakukan ini, dengan tutorial, tangkapan layar, dan tautan unduhan ke alat yang relevan:
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Lihatlah Windows Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Itu akan membantu.
Dua alat hebat adalah LatencyMon dan DPC Latency Checker .