การรายงานการใช้ CPU ของ Windows“ iowait”


9

บัญชี Windows สำหรับและรายงาน " iowait"ในลักษณะเดียวกับ Linux หรือไม่ นั่นคือกระบวนการเข้าสู่ "uninterruptible sleep" และเวลาที่ใช้จะถูกลบออกจาก "CPU free" หรือไม่

ถ้าเป็นเช่นนั้น Perfmon counters จะเหมาะสมในการตรวจหา "cpu busy เนื่องจากความล่าช้าในการให้บริการ IO" ซึ่งต่างจาก "cpu busy เนื่องจากการคำนวณ"


นี่คือตัวช่วยสร้างเคอร์เนล คุณอาจต้องการดูใน"Windows Internals"เพื่อดูภาพที่มีรายละเอียดมากขึ้น
the-wabbit

คำตอบ:


10

แนวคิดบางอย่างในเคอร์เนล Windows แตกต่างอย่างมากจากที่ใช้ใน Linux นี่คือสาเหตุที่คุณไม่เห็นตัวiowaitนับใน Perfmon

ขั้นแรกให้เอนทิตีของการจัดตารางเวลาใน Windows เป็นเธรดไม่ใช่กระบวนการ กระบวนการเป็นเพียงคอนเทนเนอร์สำหรับ 1 เธรด นอกจากนี้ Windows ไม่ได้กำหนดสถานะสลีปที่ไม่สามารถขัดจังหวะการทำงานของเธรด (แม่นยำยิ่งขึ้นคำขอ I / O ทั้งหมดสามารถถูกขัดจังหวะ - เช่นโดยเธรดอื่นของกระบวนการเดียวกัน) ดังนั้นจึงไม่มีiowaitคู่ที่แน่นอนบนแพลตฟอร์ม Windows Windows รายงานเวลาที่เธรดกำลังรอการซิงค์ I / O ในฐานะ "ว่าง" เนื่องจากเธรดจะเปลี่ยนบริบทโดยตัวกำหนดตารางเวลาทันทีที่พวกเขาออกคำขอซิงค์ I / O

หากคุณสนใจจำนวนเวลาทั้งหมดที่ใช้สำหรับการดำเนินการ I / O บนอุปกรณ์เฉพาะคุณควรดูที่เคาน์เตอร์ที่เกี่ยวข้องกับเวลาแฝงพร้อมกับจำนวนคำขอที่ประมวลผลภายในระยะเวลานี้ อย่างไรก็ตามนี่จะไม่อนุญาตให้คุณแยกย่อยในรูปแบบการเข้าถึงแบบซิงโครนัส vs แบบอะซิงโครนัส

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