Pelaporan pemanfaatan CPU Windows "iowait"

9

Apakah Windows bertanggung jawab dan melaporkan " iowait" dengan cara yang sama seperti Linux? Artinya, proses memasukkan "tidur tanpa gangguan" dan waktu yang dihabiskan dikurangi dari "Bebas CPU"?

Jika demikian, penghitung Perfmon mana yang sesuai untuk mendeteksi "cpu busy karena penundaan servis IO" yang bertentangan dengan "cpu busy karena perhitungan?"

Yolo Perdiem
sumber
Ini adalah Kernel wizardry. Anda mungkin ingin melihat "Windows Internal" untuk gambar yang lebih rinci.
the-wabbit

Jawaban:

10

Beberapa konsep dalam kernel Windows berbeda secara signifikan dari yang ada di Linux, inilah mengapa Anda tidak melihat iowaitpenghitung di Perfmon.

Pertama, entitas penjadwalan di Windows adalah utas, bukan proses. Suatu proses hanyalah sebuah wadah untuk 1+ utas. Selain itu, Windows tidak menetapkan kondisi tidur yang tidak dapat terputus untuk utasnya (lebih tepatnya, semua permintaan I / O dapat terganggu - misalnya oleh utas lain dari proses yang sama), sehingga tidak akan ada iowaitmitra yang tepat pada platform Windows. Windows melaporkan waktu utasnya menunggu sinkronisasi I / O sebagai "idle" karena utas hanya di-switch-konteks oleh penjadwal begitu mereka mengeluarkan permintaan I / O sinkronisasi.

Jika Anda tertarik dengan jumlah total waktu yang dihabiskan untuk operasi I / O pada perangkat tertentu, Anda harus melihat penghitung terkait latensi bersama dengan jumlah permintaan masing-masing diproses dalam periode waktu ini. Namun ini tidak akan memungkinkan Anda untuk memecahnya dalam pola akses sinkron vs asinkron.

the-wabbit
sumber