Saya tahu wa
(dalam top
) mengukur waktu CPU menunggu I / O. Banyak artikel mengatakan itu.
Tapi saya bingung itu, berdasarkan 2 poin pengetahuan:
- jika suatu proses menggunakan panggilan sistem untuk membaca disk, proses tersebut diblokir.
- Jika suatu proses diblokir, itu tidak dapat dijadwalkan berjalan pada CPU.
Baik?
Sepertinya tidak ada waktu untuk CPU menunggu pada I / O ... Apa yang terjadi?
Jika merekomendasikan beberapa buku atau artikel untuk saya baca lebih lanjut, jauh lebih baik.
Jawaban:
Status siaga CPU dibagi dalam dua status "sub" yang berbeda:
iowait
danidle
.Jika CPU idle, kernel kemudian menentukan apakah ada setidaknya satu I / O saat ini sedang dalam proses untuk disk lokal atau disk yang dipasang dari jarak jauh (NFS) yang telah diinisiasi dari CPU tersebut. Jika ada, maka CPU dalam keadaan
iowait
. Jika tidak ada I / O dalam proses yang dimulai dari CPU itu, CPU dalamidle
keadaan.Jadi,
iowait
adalah persentase waktu CPU idle DAN ada setidaknya satu I / O dalam proses yang dimulai dari CPU itu.The
iowait
kontra menyatakan bahwa sistem dapat menangani pekerjaan lebih komputasi. Hanya karena CPU dalamiowait
keadaan tidak berarti tidak dapat menjalankan utas atau proses lain pada CPU itu.Jadi,
iowait
hanyalah bentuk waktu idle.sumber
dd if=/dev/sda of=/dev/null
untuk membuat yang tinggiwa
. Kemudian jalankan kode while-true,wa
bukanus
. Kekacauan terima kasih.Saya tidak 100% yakin saya mengerti pertanyaannya, tetapi ada beberapa ide.
Ada pertanyaan lain di sini yang menanyakan hal ini, dan memiliki beberapa jawaban yang bagus: Adakah yang bisa menjelaskan apa sebenarnya IOWait?
Ada posting yang bagus di sini: http://veithen.github.io/2013/11/18/iowait-linux.html
sumber