ฉันจะไปถึงต้นเหตุของการเรียกขั้นตอนรอตัดบัญชีสูงได้อย่างไร


41

ฉันมีโปรเซสเซอร์ Dual Core และหนึ่งในสองนั้นอยู่ที่ 100% ตลอดเวลา มองใน ProcessExplorer แสดงให้ฉันเห็นว่ามันเป็นการเรียกขั้นตอนที่เลื่อนออกไป การอ่านหนังสือทั่วอินเทอร์เน็ตดูเหมือนจะให้คำตอบที่ต่างกันมากมาย

เป็นไปได้ไหมที่จะกำหนดขั้นตอนสองสามขั้นตอนเพื่อพยายาม จำกัด ปัญหาที่อาจเกิดขึ้นในกรณีของฉัน

อัปเดต 1: FWIW ปัญหายังคงมีอยู่แม้ในเซฟโหมด

อัปเดต 2:ฉันถอดปลั๊กทุกอย่างที่ทำได้จากด้านหลังของพีซีและนั่นทำให้ฉันซื้อโปรเซสเซอร์ฟรีเพิ่มขึ้น 40% ฉันดาวน์โหลดเครื่องมือ RATTV3ด้วยเช่นกัน แต่ด้วยเหตุผลบางอย่างบนเครื่องของฉันมันก็ไม่ได้ทำให้ฉันเกิดความผิดพลาดระหว่างคนขับ มีคำอธิบายที่ดีของทั้งสอง DPCLatencyChecker และ RATTV3 เป็นที่นี่

การปรับปรุงที่ 3: , LatencyMon (ดูคำตอบของฉันด้านล่าง) บอกฉันมันnvstor32.sys- ซึ่งเป็นคนขับรถของ NVIDIA SATA - กับเวลาประมาณ 5300 ไมโครวินาที

อัปเดต 4:พล็อตมีความหนาในขณะที่ไตร่ตรองว่าจะลองบูตดิสก์กู้คืน (เพื่อดูว่าเป็นไดรเวอร์จริงหรือไม่ใช่ปัญหาฮาร์ดแวร์) ฉันสังเกตว่าเครื่องเล่นดีวีดี / ซีดีไม่ทำงาน (เช่นไม่เปิด ประตูเมื่อฉันกดปุ่ม) เนื่องจากเครื่องเพิ่งกลับมาจากการเปลี่ยนเมนบอร์ดฉันคิดว่าพวกเขาอาจลืมที่จะเสียบมันฉันเปิดกล่องทุกอย่างดูโอเค แต่ฉันถอดปลั๊กแล้วเสียบกลับเข้าไปใหม่อีกครั้ง ในการรีบูตทุกอย่างใช้ได้ดี - ไม่มี DPC (สูงสุดตอนนี้ 300µs)!

อัปเดต 5:ในวันต่อมาปัญหากลับมาเครื่องเล่นซีดีไม่ทำงานอีกครั้งแม้เคอร์เซอร์ในกล่องข้อความรหัสผ่านก็กะพริบช้าๆ ... พยายามถอดปลั๊กทุกอย่างที่ฉันคิดได้และในการรีบูตครั้งที่สองทำงานได้อีกครั้ง (เช่น Update2 ) ครั้งต่อไปฉันจะลองถอดปลั๊กเครื่องเล่นซีดีอย่างสมบูรณ์ ...

อัปเดต 6:เพียงสังเกตว่าบันทึกเหตุการณ์ของระบบได้nvstor32.sysแจ้งว่ามีข้อผิดพลาดParity error detected in \Device\RaidPort0จากนั้นมีคำเตือนเกี่ยวกับการส่งการเริ่มต้นใหม่ ตอนนี้ต้องคิดออกว่าอันRaidPort0ไหนคือ ... (โปรดทราบฉันไม่มีการตั้งค่า RAID มันเป็นเพียงเอเซอร์มาตรฐานที่ลุ่ม) โอ้และการตั้งค่า Avast ของฉันดูเหมือนจะถูกฆ่าเมื่อฉันทำ System Rollback (หรืออะไรก็ตามที่เรียกว่า) เพราะมันจะไม่เริ่มต้น (ข้อผิดพลาด RPC) จะไม่ถอนการติดตั้ง (ข้อผิดพลาด setiface เกิดขึ้น)

อัปเดต 7:ในที่สุดก็ถึงเวลาที่จะรีบูทด้วย DVD ที่ไม่ได้เสียบปลั๊ก ไม่มีปัญหา DPC อีกต่อไป! (มีข้อบกพร่องจำนวนมากในหน้านี้ แต่มีไว้เพื่อใช้ในภายหลัง) ขั้นตอนถัดไป: หาว่าเป็นสายเคเบิลหรือเครื่องเล่นดีวีดี

อัปเดต 8:ยืมสาย SATA บูตกับมันแล้วไม่มีปัญหา เครื่องเล่นซีดี / ดีวีดีทำงานได้ไม่มีปัญหา DPC nvstor32.sysไม่มีตัวประมวลผลถูกบล็อก มีความสุขที่สุด ... เกือบ: ฉันยังคงมีปัญหากับ Avast ปัญหา DPC ที่เห็นได้ชัดstorport.sysเมื่อเริ่มต้นใช้งาน (อาจเป็นเรื่องปกติสำหรับ USB หรือไม่) และมีข้อผิดพลาดหน้าฮาร์ดจำนวนมาก แต่นั่นจะเป็นประเด็นของคำถามอื่น ๆ

Postscript:ฉันเพิ่งเริ่มมีปัญหาเดียวกันและใช้วิธีการเดียวกันจัดการติดตามมันลงในแท่ง USB (อันที่ฉันใช้สำหรับ ReadyBoost) ที่ถูกยิง


3
เครื่องมือที่ดีจริงและช่วยเหลือที่นี่ ... msfn.org/board/topic/…
Moab

คำตอบ:


43

นี่คือเรื่องราวของวิธีที่ฉันค้นพบสาเหตุของความล่าช้า DPC สูงของฉัน


ระบบของฉันมีการคลิกและปรากฏระหว่างเล่นเสียง ฉันรู้ว่านี่หมายความว่ามีบางสิ่งในโหมดเคอร์เนลกำลังบีบอัดซีพียู ความคิดแรกของฉันคือการกระตุ้นให้เกิดProcess Explorerและดูว่ามีอะไรผิดปกติหรือเปล่า สิ่งเดียวที่ดึงดูดความสนใจของฉันคือการใช้เวลานานเกินไปในการดำเนินการเรียกขั้นตอน (DPC):

สกรีนช็อตของ Process Explorer แสดงเวลา DPC สูง

ฉันรู้ว่า DPC นั้นเป็นโค้ดที่ถูกเรียกใช้ภายในไดร์เวอร์; ความท้าทายคือการคิดออกว่าไดรเวอร์ใด ฉันหันไปใช้DPC Latency Checkerซึ่งแสดงให้ฉันเห็นว่า latency แย่แค่ไหน:

สกรีนช็อตของ DPC Latency Checker

DPC Latency Checkerแนะนำให้ดำเนินการผ่านอุปกรณ์ต่าง ๆ ในDevice Managerและปิดการใช้งานฮาร์ดแวร์ที่ไม่จำเป็นแบบหนึ่งต่อหนึ่ง (เช่นการ์ดเครือข่ายการ์ดเสียง) โดยหวังว่าจะแยกไดรเวอร์ buggy ออก (หากคุณปิดการใช้งานอุปกรณ์และความล่าช้า DPC ลดลงอย่างกระทันหัน: คุณพบผู้ร้ายแล้ว!)

ภาพหน้าจอของอุปกรณ์ที่ปิดใช้งาน

น่าเสียดายหลังจากปิดการใช้งานทุกอย่างที่ฉันสามารถทำได้ (ในขณะที่ยังสามารถใช้คอมพิวเตอร์ได้ - อย่าปิดการใช้งานฮาร์ดไดรฟ์การ์ดแสดงผลเมาส์หรือฮับ USB ที่ต่อกับเมาส์!) เวลาแฝงยังคงสูง ถัดไปผมหันไปที่Windows ประสิทธิภาพ Toolkit (ส่วนหนึ่งของSDK ของ Windows ) และโพสต์บล็อกที่ยอดเยี่ยมโดยปีเตอร์ไวแลนด์"วัด DPC เวลา" หลังจากติดตั้ง Windows Performance Toolkit:

สกรีนช็อตของตัวติดตั้ง Windows SDK โดยมีการเลือก Windows Performance Toolkit

ฉันเปิดพรอมต์คำสั่งที่ยกระดับแล้ววิ่ง:

>xperf -on Latency

หมายเหตุ : Latency กลุ่มคือชุดของเหตุการณ์ที่กำหนดไว้ล่วงหน้าซึ่งสามารถติดตามได้จาก ผู้ให้บริการกลุ่มเคอร์เนล :

>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
   ...

ในกรณีนี้Latencyสอดคล้องกับ Kernel Flags:

  • PROC_THREADสร้างและลบกระบวนการและสร้างเธรด
  • LOADERเคอร์เนลและโหมดผู้ใช้อิมเมจโหลด / ยกเลิกการโหลดเหตุการณ์
  • โปรไฟล์ CPU โปรไฟล์ตัวอย่าง
  • CSWITCH การสลับบริบท
  • DPCเหตุการณ์ DPC
  • INTERRUPTเหตุการณ์ขัดจังหวะ
  • DISK_IOดิสก์ I / O
  • HARD_FAULTSข้อผิดพลาดของหน้าฮาร์ด

หลังจากปล่อยให้ทำงานเป็นเวลาหนึ่งนาทีฉันหยุดการติดตามและให้บันทึกเป็นไฟล์:

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

จากนั้นฉันดูผลลัพธ์ของการติดตามด้วยคำสั่ง:

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

โหลดนี้กราฟิกของ Windows วิเคราะห์ประสิทธิภาพ คลิกขวาที่การใช้งาน CPU DPCกราฟฉันเลือกตารางสรุป นี่แสดงให้เห็นถึงการแบ่งเวลาที่ใช้ใน DPCs โดยไดรเวอร์:

สกรีนช็อตของเอาต์พุต XPerf

ทันทีที่ฉันเห็นไดรเวอร์หนึ่งตัว ( tsvp.sys) ใช้เวลาเฉลี่ย 2.8ms ต่อการประมวลผล DPC ซึ่งเป็นลำดับที่ช้ากว่าไดรเวอร์อื่น ๆ :

ภาพหน้าจอ

Googling tsvp.sysให้คำตอบกับฉัน: CommViewซึ่งฉันเพิ่งติดตั้ง

คำถามนี้เป็นวิธีการปิดการใช้งานไดรเวอร์นี้ ใช้AutoRunsฉันเห็นว่ามันติดตั้งเป็นบริการไดรเวอร์:

สกรีนช็อตของการทำงานอัตโนมัติ

เมื่อใช้ตัวจัดการอุปกรณ์ฉันสามารถปิดใช้งานบริการที่โฮสต์ไดรเวอร์นี้ ก่อนอื่นคุณต้องแสดงอุปกรณ์ที่ซ่อนอยู่จากนั้นขยายNon-Plug and Play Driversโหนด:

สกรีนช็อตของตัวจัดการอุปกรณ์

ในที่สุดฉันก็สามารถหยุดบริการไดร์เวอร์และฉันเปลี่ยนเป็นโหมดเริ่มต้นจากSystem(หมายความว่าไดรเวอร์เป็นส่วนสำคัญของ Windows และ Windows ไม่สามารถบู๊ตได้หากไม่มี) ไปเป็นDemand(หมายถึงฉันสามารถสตาร์ทไดร์เวอร์เมื่อต้องการ)

สกรีนช็อตของตัวจัดการอุปกรณ์

การหยุดบริการไดร์เวอร์จะแก้ไขการหน่วงเวลา DPC ของฉันทันที:

ภาพหน้าจอ

ฉันอาจหรืออาจจะไม่ถอนการติดตั้ง CommView อย่างสมบูรณ์ แต่ตอนนี้ฉันได้แก้ไข Case of the High DPC Latency แล้ว


อัปเดต : เริ่มต้นด้วย Windows 8 คุณจะไม่เห็นไดรเวอร์ที่ไม่ใช่แบบพลักแอนด์เพลย์ใน Device Manager :

หมายเหตุเริ่มต้นด้วย Windows 8 และ Windows Server 2012 ตัวจัดการ Plug-and-Play จะไม่สร้างการจำลองอุปกรณ์ซ้ำอีกต่อไปสำหรับอุปกรณ์ที่ไม่ใช่ PnP (ดั้งเดิม) ดังนั้นจึงไม่มีอุปกรณ์ดังกล่าวที่จะดูใน Device Manager หากต้องการรวมอุปกรณ์ที่ซ่อนอยู่ในจอแสดงผล Device Manager ให้คลิกดูและเลือกแสดงอุปกรณ์ที่ซ่อน

Microsoft เอาคุณสมบัตินั้นออกไปและแทนที่ด้วยสิ่งใด ทำได้ดีมาก

ในความโกรธเบื่อหน่ายทั่วไปคำตอบที่ไม่ช่วยเหลือบางอย่าง :

  • ตัวจัดการอุปกรณ์ไม่เคยแสดงไดรเวอร์ที่ไม่ใช่ pnp
  • ทำไมคุณต้องการสิ่งนี้

โชคดีที่ NirSoft ได้สร้างสิ่งทดแทน ServiWinให้คุณดูหยุดและเริ่มบริการทั้งหมด (แม้แต่ที่ Microsoft ตัดสินใจว่าผู้ดูแลระบบควรได้รับอนุญาตให้ดู):

สกรีนช็อตของ ServiWin


13

รายงานความคืบหน้า

เครื่องมือที่ดีที่สุดที่ฉันเคยพบคือLatencyMonซึ่งทำทุกสิ่งที่เครื่องมือทั้งสองก่อนหน้านี้ทำโดยที่คุณไม่ต้องคิด หน้าดาวน์โหลดขอให้คุณลงทะเบียนผ่านอีเมล - แต่ไม่มีอะไรเกิดขึ้นกับฉันเมื่อฉันทำเช่นนั้น - แต่คุณสามารถเลื่อนไปที่ด้านล่างของหน้าเพื่อดาวน์โหลดได้

ข้อความแสดงแทน


6

ในกรณีของฉันฉันใช้LatencyMon (จากคำตอบของ Benjol) และพบว่าผู้ขับขี่แช่แข็งชีวิตจักรวาลและทุกอย่างเป็น (เช่น) storport.sysซึ่งเป็นไดรเวอร์ของ Microsoft สำหรับ " รถบัสประสิทธิภาพสูง " นั่นยืนยันว่าฉันสงสัยว่าปัญหาเกี่ยวข้องกับ IO

ฉันไปข้างหน้าและดูที่Windows 7 Event Viewer , โฟลเดอร์Windows Logs -> Applicationและพบข้อผิดพลาดหลายอย่างจาก Volume Shadow Copy (VSS) ที่เกิดขึ้นทุก ๆ 30 นาทีถึง 2 ชั่วโมง พวกเขามีรายละเอียดเช่นนี้:

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

จากนั้นฉันเริ่มตรวจสอบว่า heck คือ VSSและอะไรที่ใช้ ผมไปหลาย - หน้า - เกี่ยวกับ - VSS การแก้ไขปัญหา จะผ่านทั้งหมดที่ฉันมีหนึ่งผู้ต้องสงสัยขนาดใหญ่: ซอฟต์แวร์สำรองข้อมูลของฉันCrashPlan

ฉันพบหน้าเว็บที่เกี่ยวข้องกับข้อผิดพลาด VSSอย่างรวดเร็ว โดยทำตามคำแนะนำที่นั่นเพื่อปิดการสำรองข้อมูลของไฟล์ที่เปิดซึ่งใช้ VSS การค้างการใช้งานเคอร์เนล CPU สูง ฯลฯ จะสูญพันธุ์อย่างสมบูรณ์ และอย่าเข้าใจฉันผิด: CrashPlan ยอดเยี่ยมมาก! คุณสมบัตินี้ไม่ได้ทำงานกับเครื่องของฉัน

BTW หน้านี้ตรงนี้คือ THE ONE ที่มอบโอกาสเริ่มต้นให้ฉันซึ่งช่วยฉันค้นหาสาเหตุที่แท้จริงของปัญหาของฉัน ขอบคุณมาก @Benjol และคนอื่น ๆ ที่ตอบก่อนหน้านี้! ฉันหวังว่าคำตอบของฉันจะช่วยผู้อื่น ...


ขอบคุณ Chuim ที่อาจเป็นปัญหาที่แน่นอนของฉันเช่นกันฉันได้ทำงานเพื่อแก้ไขปัญหานี้มาหลายสัปดาห์และในที่สุดฉันก็แคบลงเป็น VSS และ storport.sys แต่ก็ไม่สามารถหาสาเหตุที่แท้จริง (CrashPlan สำรองไฟล์ที่เปิด) จนกระทั่ง โพสต์ของคุณ ฉันยังไม่แน่ใจว่าสิ่งนี้จะแก้ไขได้หรือไม่ แต่นี่เป็นโอกาสในการขายที่ดีที่สุดที่ฉันเคยมีสำหรับเวลาแฝง DPC สูง!
Matt Palmerlee

ฉันเพิ่งตรวจสอบว่า tweaking การตั้งค่า crashplan เพื่อไม่เปิดไฟล์สำรองข้อมูลทำงาน! ขอบคุณมาก! ตอนนี้ฉันสามารถเล่น Skyrim ได้โดยไม่ต้องหยุดเสียงน่ากลัวและบกพร่อง!
Matt Palmerlee

เพียงแค่ต้องการเพิ่มว่าฉันกำลังประสบกับการพูดติดอ่างเสียงหลังจากสร้างพีซีเครื่องใหม่และพบว่า Crashplan เป็นผู้ร้ายเช่นกัน พบคำตอบนี้ผ่านcomputercabal.com/2012/07/debugging-audio-skipping-lagging.html ขอบคุณทุกคนที่ทำงานอย่างหนักเพื่อติดตามสิ่งนี้!
chucknelson

4

อาจมีไดรเวอร์อุปกรณ์ที่ทำให้ระบบของคุณไม่ว่าง วิธีหนึ่งในการวิเคราะห์นี้คือการเรียกDPC แฝงตัวตรวจสอบ จากนั้นปิดการใช้งานไดรเวอร์ทีละหนึ่งและดูว่าโหลด DPC ลดลงหรือไม่ (กระบวนการสำรวจยังใช้งานได้)

คุณสามารถปิดการใช้งานไดรเวอร์อุปกรณ์ในการจัดการคอมพิวเตอร์ -> ตัวจัดการอุปกรณ์


ขอบคุณฉันจะอ่านลิงค์นี้ ขอโทษที่ฉันไม่รู้ แต่อุปกรณ์ใดที่ฉันสามารถปิดการใช้งานได้อย่างปลอดภัยโดยไม่ต้อง 'ตัดสาขา' (เช่นแป้นพิมพ์หน้าจอเมาส์ ฯลฯ )
Benjol

1
ไม่แน่ใจผู้ต้องสงสัยหลักของฉันจะเป็นบริการที่ไม่ใช่ของ Microsoft ฉันจะลองถ้ามันผิดคุณสามารถบูตในเซฟโหมดและเปิดใช้งานไดรเวอร์อีกครั้ง
Andomar

ตกลงฉันเห็นว่าหน้านั้นมีรายการไดรเวอร์ที่ต้องหลีกเลี่ยง ต้องหวังว่ามันจะไม่ใช่หนึ่งในนั้น
Benjol

ก่อนหน้านั้นฉันคิดว่าฉันจะลองบูทจากดิสก์กู้คืน - ถ้าฉันยังพบปัญหามีแนวโน้มที่จะเป็นสิ่งฮาร์ดแวร์มากกว่าหรือไม่
Benjol

1
+1 สำหรับตัวตรวจสอบเวลาในการตอบสนอง จากประสบการณ์ของฉันผู้ร้ายที่พบบ่อยที่สุดที่นี่คือไดรเวอร์สำหรับการ์ดเครือข่ายไร้สาย
Shinrai

3

ฉันรู้สึกว่าฉันควรเพิ่มคำตอบของฉันที่นี่เพราะปัญหานี้ยากที่จะแก้ไขและไม่เคยลงไดรเวอร์ที่ไม่ดีหรือความขัดแย้ง IRQ

ฉันมีเวลาแฝง RPC สูงซึ่งก่อให้เกิดเสียงแตก / เสียงแตกในการ์ดเสียง USB แบบมือโปรของฉัน เครื่องมือที่อธิบายในคำตอบที่ยอมรับนั้นไม่มีประโยชน์ในการระบุไดรเวอร์เฉพาะที่เป็นสาเหตุของปัญหา เวลาแฝงเกิดขึ้นในหลายกระบวนการ: HAL, USBPORT.SYS และเคอร์เนลของ Windows ขุดลึกลงไปในกระบวนการเหล่านี้ไม่ได้เปิดเผยผู้กระทำผิดที่ชัดเจน

ในกรณีของฉันปรากฏว่าปัญหาระดับต่ำกว่าและเฉพาะกับเมนบอร์ด GigaByte ที่มีชิปเซ็ตและการแก้ไข BIOS บางอย่าง วิธีแก้ไขคือปิดการใช้งาน Intel SpeedStep และคุณสมบัติเฉพาะอื่น ๆ ของเมนบอร์ดที่ปรับความเร็ว CPU และแรงดันไฟฟ้าทันที เมื่อตัวเลือกเหล่านี้ถูกปิดเวลาแฝง RPC ของฉันได้รับการแก้ไขทันที


1

ฉันเริ่มเห็นข้อผิดพลาดนี้หลังจากแก้ไขข้อผิดพลาด IRQ ด้วยคอนโทรลเลอร์อีเทอร์เน็ต nVidia 10/100/1000 ที่ปรากฏขึ้นเมื่ออัพเกรดการ์ดกราฟิกของฉันเป็น GeForce GTX 550 Ti

ดูเหมือนว่าหลังจากอัพเกรดเป็นไดรเวอร์ GeForce ใหม่ 295.73 แล้วแก้ไขข้อขัดแย้งขัดจังหวะฉันได้ลบเสียหายหรือถอนการติดตั้งไดรเวอร์คอนโทรลเลอร์ nForce SATA / RAID คอนโทรลเลอร์ที่มีอยู่แล้ว ฉันไม่ใช้ RAID ข้อผิดพลาดยังคงมีอยู่และล็อค Vista Ultimate 64 บิตเป็นครั้งคราว

หลังจากลองใช้คำแนะนำการแก้ไขปัญหาทั้งหมดที่ฉันพบบนเว็บวิธีแก้ปัญหาง่าย ๆ นำเสนอตัวเอง ... ฉันอัพเกรดเป็นคอนโทรลเลอร์ nForce SATA / RAID 15.58 แต่ทิ้งไดรเวอร์ nForce อื่น ๆ ไว้คนเดียว

แก้ไขแล้วสำหรับฉันและตอนนี้ฉันได้แก้ไขข้อขัดแย้งไดรเวอร์ทั้งหมดของฉันแล้ว หวังว่ามันจะช่วยคุณได้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.