บางครั้งฉันเจอเซิร์ฟเวอร์ (Windows 2003 และ 2008) ที่มีการขัดจังหวะตัวประมวลผล% สูง มีวิธีดูว่าโปรแกรมหรืออุปกรณ์ใดทำให้เกิดการขัดจังหวะหรือไม่
บางครั้งฉันเจอเซิร์ฟเวอร์ (Windows 2003 และ 2008) ที่มีการขัดจังหวะตัวประมวลผล% สูง มีวิธีดูว่าโปรแกรมหรืออุปกรณ์ใดทำให้เกิดการขัดจังหวะหรือไม่
คำตอบ:
หลังจากขุดเอกสาร (ขึ้นอยู่กับคำตอบอื่น ๆ ที่นี่) นี่คือกระบวนการที่ฉันใช้:
จับภาพบันทึก ETW ของปัญหา
วิธีที่ง่ายที่สุดที่จะทำเช่นนี้คือการใช้Windows ประสิทธิภาพบันทึก ฉันไม่แน่ใจว่าเมื่อมันปรากฏตัวครั้งแรก แต่ดูเหมือนว่าจะถูกสร้างขึ้นใน Windows รุ่นล่าสุด CPU usage
ตั้งค่าโปรไฟล์เพื่อ
หรือใช้พรอมต์คำสั่งยกระดับนำทางไปยังโฟลเดอร์ที่มีและใช้เครื่องมือบรรทัดคำสั่ง xperf:
xperf -on base+interrupt+dpc
หมายเหตุคุณจะต้องปิดการตรวจสอบกระบวนการหรือแอพอื่น ๆ ที่ใช้ ETW หรือคุณจะได้รับข้อผิดพลาดต่อไปนี้: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
หยุดการติดตาม / บันทึกการบันทึก
xperf -d interrupt_trace.etl
เปิดการติดตามในWindows Performance Analyzer
(ส่วนหนึ่งของ Windows Performance Toolkit); บางสถานที่พูดถึงการใช้xperfview
แทน
ขยายComputation
-> CPU Usage (Sampled)
-> DPC and ISR Usage by Module, Stack
คลิกขวาและadd graph to analysis view
นี่ชี้ไปที่คนขับที่สงสัย ในกรณีนี้ HDAudBus.sys ใช้ค่าคงที่ 10.82% ของซีพียูของฉันผ่านการขัดจังหวะซึ่งเป็นสิ่งที่ Process Explorer แสดงให้ฉันเห็น
หากคุณสามารถจัดการเครื่องมือระบบระดับต่ำได้
ตัววิเคราะห์ประสิทธิภาพของ Windows (WPA)
Windows Performance Analyzer (WPA) เป็นชุดเครื่องมือตรวจสอบประสิทธิภาพที่ใช้สร้างโปรไฟล์ประสิทธิภาพเชิงลึกของระบบปฏิบัติการและแอพพลิเคชั่น Microsoft Windows
หลังจากคุณเรียนรู้วิธีใช้ xperf; เช็คเอาท์;
การกระทำ DPC / ISR สร้างรายงานข้อความที่สรุปการวัดต่างๆที่เกี่ยวข้องกับ DPC และ ISR การใช้งานสำหรับการกระทำนี้คือ:
คัดลอกรหัส -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2]
ตัวเลือก
ลักษณะ
DPC
แสดงสถิติสำหรับ DPC เท่านั้น
ISR
แสดงสถิติสำหรับ ISR เท่านั้น
สรุป
แสดงรายงานสรุป
ช่วงเวลา [dt]
แสดงรายงานการใช้งานสำหรับช่วงเวลาของ dt ค่าเริ่มต้นคือ 1 วินาที
bucket [dt]
แสดงฮิสโตแกรมสำหรับช่วงเวลาของ dt ค่าเริ่มต้นคือ 2 วินาที
ช่วง T1 T2
แสดงความล่าช้าระหว่าง T1 และ T2
If no data type is specified, default is to show report for both DPC
และ ISR หากไม่ได้ระบุประเภทรายงานค่าเริ่มต้นคือพิมพ์รายงานทั้งสามประเภท
นี่คือบทความที่ดีที่สุดที่ฉันได้พบเกี่ยวกับวิธีการทำเช่นนี้กับบทช่วยสอนภาพหน้าจอและลิงก์ดาวน์โหลดไปยังเครื่องมือที่เกี่ยวข้อง:
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
ดูที่ Windows Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
ที่ควรช่วย
สองเครื่องมือที่ดีที่มีLatencyMonและDPC แฝงตัวตรวจสอบ