Bagaimana cara saya sampai ke akar penyebab Panggilan Prosedur Tangguhan tinggi?

41

Saya punya prosesor Dual core, dan salah satu dari keduanya secara konstan 100%. Mencari di ProcessExplorer menunjukkan kepada saya bahwa itu Panggilan Prosedur Ditangguhkan. Membaca di internet sepertinya memberi saya banyak jawaban berbeda.

Apakah mungkin untuk menetapkan beberapa langkah untuk mencoba mempersempit masalah apa yang mungkin ada dalam kasus saya?

Pembaruan 1: FWIW, masalah tetap ada bahkan dalam Mode Aman.

Pembaruan 2: Saya mencabut semua yang saya bisa dari bagian belakang PC, dan itu memberi saya prosesor gratis 40% lebih banyak. Saya juga mengunduh alat RATTV3 , tetapi untuk beberapa alasan pada mesin saya itu tidak memberi saya kerusakan driver-by-driver. Ada deskripsi yang bagus tentang DPCLatencyChecker dan RATTV3 di sini .

Update 3: , LatencyMon (lihat jawaban saya di bawah ini) memberitahu saya itu nvstor32.sys- yang merupakan driver SATA NVidia ini - dengan waktu sekitar 5300 mikrodetik.

Pembaruan 4: Plotnya mengental, sambil merenungkan apakah akan mencoba boot dari disk pemulihan (untuk melihat apakah itu benar-benar driver, dan bukan masalah perangkat keras), saya perhatikan bahwa pemutar DVD / CD tidak berfungsi (yaitu, bahkan tidak membuka pintu ketika saya menekan tombol). Mengingat bahwa mesin baru saja kembali dari mengganti motherboard, saya pikir mungkin mereka lupa untuk memasangnya. Saya membuka kotak, semuanya tampak ok, tapi saya mencabut dan memasangnya kembali. Saat reboot, semuanya baik-baik saja - tidak ada lagi DPC (tertinggi sekarang 300μs)!

Pembaruan 5: Pada hari berikutnya, masalah kembali, pemutar CD tidak berfungsi lagi, bahkan kursor di kotak teks kata sandi berkedip dalam gerakan lambat ... Mencoba mencabut semua yang dapat saya pikirkan, dan pada reboot kedua, bekerja kembali (seperti pada Update2 ). Lain kali saya akan mencoba mencabut CD player sepenuhnya ...

Pembaruan 6: Baru saja melihat log peristiwa Sistem telah nvstor32.sysmemberikan pesan kesalahan Parity error detected in \Device\RaidPort0, kemudian peringatan tentang pengiriman reinisialisasi. Sekarang hanya perlu mencari tahu yang mana RaidPort0... (catatan, saya tidak punya pengaturan RAID, itu hanya Acer standar rawa). Oh, dan pengaturan Avast saya sepertinya terbunuh ketika saya melakukan System Rollback (atau apa pun namanya), karena itu tidak akan mulai (kesalahan RPC), tidak akan mencopot pemasangan (kesalahan setiface telah terjadi).

Pembaruan 7: Akhirnya ada waktu untuk reboot dengan mencabut DVD. Tidak ada lagi masalah DPC! (banyak kesalahan halaman, tapi itu untuk nanti). Langkah selanjutnya: cari tahu apakah itu kabel, atau pemutar DVD.

Pembaruan 8: Meminjam kabel SATA, boot dengan itu, tidak ada masalah. Pemutar CD / DVD berfungsi, tidak ada masalah DPC nvstor32.sys, tidak ada prosesor yang diblokir. Selamat berakhir ... hampir: Saya masih punya masalah dengan Avast, masalah DPC jelas dengan storport.syssaat start up (mungkin normal untuk USB?), Dan banyak kesalahan halaman yang keras. Tetapi itu akan menjadi pokok pertanyaan lain.

Postscript: Saya baru-baru ini mulai mengalami masalah yang sama, dan menggunakan metode yang sama, berhasil melacaknya ke USB stick (yang saya gunakan untuk ReadyBoost) ditembak.

Benjol
sumber
3
Alat yang sangat bagus dan bantuan di sini ... msfn.org/board/topic/…
Moab

Jawaban:

43

Ini adalah kisah bagaimana saya menemukan penyebab latensi DPC saya yang tinggi.


Sistem saya mengalami klik dan muncul selama pemutaran suara. Saya tahu ini berarti sesuatu dalam mode kernel memonopoli CPU. Pikiran pertama saya adalah melihat-lihat Process Explorer , dan melihat apakah ada sesuatu yang tidak pada tempatnya. Satu-satunya hal yang menarik perhatian saya adalah jumlah waktu berlebihan yang dihabiskan untuk melakukan Panggilan Prosedur Ditangguhkan (DPC):

Cuplikan layar Process Explorer menunjukkan waktu DPC tinggi

Saya tahu bahwa DPC adalah kode yang dijalankan di dalam driver; tantangannya adalah untuk mencari tahu pengemudi yang mana . Saya beralih ke DPC Latency Checker , yang menunjukkan seberapa buruk latensi itu:

tangkapan layar DPC Latency Checker

DPC Latency Checker menyarankan untuk menelusuri perangkat di Device Manager , dan menonaktifkan perangkat keras yang tidak esensial satu-per-satu (mis. Kartu jaringan, kartu suara), dengan harapan mengisolasi driver kereta. (Jika Anda menonaktifkan perangkat, dan latensi DPC tiba-tiba turun: Anda telah menemukan pelakunya!)

tangkapan layar menonaktifkan perangkat

Sayangnya, setelah menonaktifkan semua yang saya bisa (sementara masih dapat menggunakan komputer - jangan menonaktifkan hard drive, kartu video, mouse, atau hub USB yang dicolokkan ke mouse!), Latensi masih tinggi. Selanjutnya saya beralih ke Windows Performance Toolkit (bagian dari SDK Windows ), dan posting blog yang sangat baik oleh Peter Weiland, "Mengukur Waktu DPC" . Setelah menginstal Windows Performance Toolkit:

Cuplikan layar penginstal Windows SDK, dengan Windows Performance Toolkit sedang dipilih

Saya membuka command prompt yang ditinggikan dan berlari:

>xperf -on Latency

Catatan : Latency Grup adalah serangkaian acara yang telah ditentukan yang dapat dilacak dari penyedia Kernel Group :

>xperf -providers kg
   Base           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO
   Diag           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+COMPACT_CSWITCH
   DiagEasy       : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
   Latency        : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE
   ...

Dalam hal ini Latencysesuai dengan Bendera Kernel:

  • PROC_THREAD Proses dan Utas buat / hapus
  • LOADER Kernel dan mode pengguna Image Load / Unload events
  • PROFIL CPU profil Contoh
  • Sakelar Konteks CSWITCH
  • Acara DPC DPC
  • GANGGUAN Acara mengganggu
  • DISK_IO Disk I / O
  • HARD_FAULTS Kesalahan Halaman Keras

Setelah membiarkan itu berjalan sebentar, saya menghentikan jejak, dan menyimpannya ke file:

C:\Users\Ian\Desktop\xperf -d thingy1.etl

Dan kemudian saya melihat hasil penelusuran dengan perintah:

C:\Users\Ian\Desktop\xperf thingy1.etl

Ini memuat Penganalisis Kinerja Windows grafis . Mengklik kanan pada grafik Penggunaan CPU DPC , saya memilih Tabel Ringkasan . Ini menunjukkan rincian waktu yang dihabiskan dalam DPC oleh driver:

tangkapan layar keluaran XPerf

Segera saya dapat melihat satu driver ( tsvp.sys) mengambil rata-rata 2,8 ms per eksekusi DPC, yang merupakan urutan besarnya lebih lambat daripada driver lain:

tangkapan layar

Googling tsvp.sysmemberi saya jawaban: CommView , yang baru saja saya instal.

Pertanyaannya sekarang adalah bagaimana cara menonaktifkan driver ini. Menggunakan AutoRuns , saya dapat melihat bahwa itu diinstal sebagai layanan driver:

tangkapan layar autoruns

Menggunakan Device Manager, saya dapat menonaktifkan layanan yang meng-host driver ini. Pertama, Anda harus Tampilkan perangkat tersembunyi , lalu perluas Non-Plug and Play Driversnode:

tangkapan layar pengelola perangkat

Akhirnya saya bisa menghentikan layanan driver, dan saya mengubah dari mode startup System(artinya driver adalah bagian penting dari Windows, dan Windows tidak bisa boot tanpa itu), ke Demand(berarti saya dapat memulai driver ketika saya ingin):

tangkapan layar pengelola perangkat

Menghentikan layanan driver segera memperbaiki latensi DPC saya:

tangkapan layar

Saya mungkin atau mungkin tidak sepenuhnya menghapus instalasi CommView, tetapi untuk sekarang saya telah memecahkan Kasus Latensi DPC Tinggi.


Pembaruan : Dimulai dengan Windows 8 Anda tidak lagi dapat melihat Non-Plug and Play Drivers di Device Manager :

Catatan Dimulai dengan Windows 8 dan Windows Server 2012, Plug-and-Play Manager tidak lagi membuat representasi perangkat untuk perangkat non-PnP (lawas). Dengan demikian tidak ada perangkat seperti itu untuk dilihat di Device Manager. Untuk memasukkan perangkat tersembunyi di layar Device Manager, klik View dan pilih Show Hidden Devices.

Microsoft mengambil fitur dan menggantinya dengan apa pun. Kerja bagus.

Dalam kemarahan yang aneh, beberapa jawaban tidak membantu :

  • Pengelola perangkat tidak pernah menunjukkan driver non pnp
  • Mengapa Anda membutuhkan ini?

Untungnya, NirSoft telah menciptakan pengganti. ServiWin memungkinkan Anda melihat, menghentikan, dan memulai semua layanan (bahkan yang telah ditentukan oleh administrator yang diizinkan oleh Microsoft):

tangkapan layar ServiWin

Ian Boyd
sumber
13

LAPORAN PERKEMBANGAN

Alat terbaik yang saya temukan sejauh ini adalah LatencyMon , yang pada dasarnya melakukan semua yang dilakukan dua alat sebelumnya, tanpa membuat Anda berpikir. Halaman unduhan meminta Anda untuk mendaftar melalui email - tetapi tidak ada yang terjadi pada saya ketika saya melakukannya - tetapi Anda tetap dapat menggulir ke bagian bawah halaman untuk mengunduh.

teks alternatif

Benjol
sumber
6

Dalam kasus saya, saya menggunakan LatencyMon (dari jawaban Benjol) dan menemukan bahwa pengemudi membekukan kehidupan, alam semesta, dan semuanya (juga) storport.sysadalah driver Microsoft untuk " bus kinerja tinggi ". Itu mengkonfirmasi kecurigaan saya bahwa masalahnya terkait IO.

Saya juga melanjutkan dan melihat Windows 7 Event Viewer , folder Windows Logs -> Aplikasi , dan menemukan beberapa kumpulan kesalahan dari Volume Shadow Copy (VSS) yang terjadi setiap 30 menit hingga 2 jam. Detailnya seperti ini:

Volume Shadow Copy Service error: Error calling a routine on the Shadow Copy Provider {b5946137-7b9f-4925-af80-51abd60b20d5}. Routine returned E_INVALIDARG. Routine details GetSnapshot({00000000-0000-0000-0000-000000000000},000000000023C850). 

Operation:
   Get Shadow Copy Properties

Context:
   Execution Context: Coordinator

Saya kemudian mulai menyelidiki untuk apa VSS dan untuk apa. Aku pergi beberapa - halaman - tentang - VSS pemecahan masalah . Melalui semua yang saya punya satu tersangka besar: perangkat lunak cadangan saya CrashPlan .

Mengikuti petunjuk itu, saya segera menemukan halaman yang menghubungkannya dengan kesalahan VSS . Dengan mengikuti petunjuk di sana untuk menonaktifkan cadangan file yang terbuka, yang menggunakan VSS, membeku, penggunaan CPU Kernel tinggi, dll benar-benar punah. Dan jangan salah paham: CrashPlan hebat! Hanya saja fitur ini tidak berfungsi pada mesin saya.

BTW, halaman ini di sini adalah SATU yang memberi saya petunjuk awal yang membantu saya menemukan akar penyebab masalah saya. Terima kasih banyak @Benjol dan semua yang menjawab sebelumnya! Saya harap jawaban saya juga akan membantu orang lain ...

Chim
sumber
Terima kasih Chuim, itu mungkin masalah persis saya juga, saya telah bekerja menyelesaikan masalah ini selama berminggu-minggu dan saya akhirnya mempersempitnya menjadi VSS dan storport.sys tetapi tidak dapat menemukan akar penyebabnya (CrashPlan mencadangkan file yang terbuka) sampai posting Anda. Saya belum yakin apakah ini akan memperbaikinya, tapi ini adalah petunjuk terbaik yang saya miliki untuk latensi DPC tinggi sejauh ini!
Matt Palmerlee
Saya baru saja memverifikasi bahwa mengubah pengaturan crashplan agar tidak membuat cadangan file yang terbuka berfungsi! Terima kasih banyak! Sekarang saya dapat memainkan Skyrim tanpa jeda dan gangguan audio yang mengerikan!
Matt Palmerlee
Hanya ingin menambahkan bahwa saya mengalami gagap audio setelah membangun PC baru dan menemukan bahwa Crashplan juga penyebabnya. Ditemukan jawaban ini melalui computercabal.com/2012/07/debugging-audio-skipping-lagging.html . Terima kasih untuk semua yang telah melakukan begitu banyak pekerjaan untuk melacak ini!
chucknelson
4

Mungkin ada driver perangkat yang membuat sistem Anda sibuk. Salah satu cara untuk menganalisis ini adalah dengan menjalankan DPC latency checker . Kemudian nonaktifkan satu driver pada satu waktu dan lihat apakah beban DPC turun. (Proses explorer juga berfungsi.)

Anda dapat menonaktifkan driver perangkat di Manajemen Komputer -> Pengelola Perangkat.

Andomar
sumber
terima kasih, saya akan membaca tautan itu. Maafkan ketidaktahuan saya, tetapi perangkat mana yang saya dapat menonaktifkan dengan aman tanpa 'memotong cabang' (yaitu, keyboard, layar, mouse dll)?
Benjol
1
Tidak yakin, tersangka utama saya adalah layanan non-Microsoft. Saya hanya akan mencoba, jika salah Anda dapat boot dalam safe mode dan mengaktifkan kembali driver
Andomar
OK, saya melihat halaman itu termasuk daftar driver yang harus dihindari. Harus berharap itu bukan salah satunya.
Benjol
Sebelum itu, saya pikir saya akan mencoba mem-boot dari disk pemulihan - jika saya masih mendapatkan masalah, itu lebih cenderung menjadi masalah perangkat keras?
Benjol
1
+1 untuk pemeriksa latensi. Dalam pengalaman saya, penyebab paling umum di sini adalah driver untuk kartu jaringan nirkabel.
Shinrai
3

Saya merasa saya harus menambahkan jawaban saya di sini karena masalah ini sulit untuk diselesaikan dan tidak selalu ke driver yang buruk atau konflik IRQ.

Saya memiliki latensi RPC tinggi yang menyebabkan muncul / berderak dalam kartu suara USB pro-sumer saya. Alat yang dijelaskan dalam jawaban yang diterima tidak membantu dalam mengidentifikasi driver tertentu yang menyebabkan masalah. Latensi terjadi di sejumlah proses: HAL, USBPORT.SYS dan kernel Windows. Menggali lebih dalam ke dalam proses-proses ini tidak mengungkapkan penyebab yang jelas.

Ternyata dalam kasus saya bahwa masalah ini lebih rendah dan spesifik untuk motherboard GigaByte dengan chipset dan revisi BIOS tertentu. Solusinya adalah menonaktifkan Intel SpeedStep dan semua fitur spesifik motherboard lainnya yang menyesuaikan kecepatan dan tegangan CPU dengan cepat. Setelah opsi ini dimatikan, latensi RPC saya segera diperbaiki.

Alex
sumber
1

Saya mulai melihat kesalahan ini setelah menyelesaikan kesalahan IRQ dengan pengontrol Ethernet nVidia 10/100/1000 saya yang muncul saat meningkatkan kartu grafis saya ke GeForce GTX 550 Ti.

Tampaknya setelah upgrade ke driver GeForce 295.73 yang baru dan kemudian menyelesaikan konflik interupsi, saya telah menghapus, merusak, atau menghapus driver nForce SATA / RAID controller yang ada. Saya tidak menggunakan RAID, kesalahan masih berlanjut, dan mengunci Vista Ultimate 64-bit dari waktu ke waktu.

Setelah mencoba semua saran pemecahan masalah yang saya temukan di web, solusi sederhana muncul dengan sendirinya ... Saya memutakhirkan ke nForce SATA / RAID 15,58, tetapi meninggalkan driver nForce lainnya.

Itu memperbaikinya untuk saya, dan saya sekarang telah menyelesaikan semua konflik driver saya. Semoga ini bisa membantu Anda juga.

Alabama Utara
sumber