Saya telah melihat ke dalam iowait
properti yang ditampilkan dalam output utilitas teratas seperti yang ditunjukkan di bawah ini.
top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
iowait
secara umum didefinisikan sebagai berikut:
"Ini adalah waktu dimana CPU idle dan ada beberapa IO yang tertunda."
Ini adalah pemahaman saya bahwa suatu proses dijalankan pada satu CPU. Setelah keluar dari jadwal karena menggunakan slot waktu atau setelah diblokir, akhirnya dapat dijadwalkan kembali pada satu CPU lagi.
Dalam kasus permintaan IO, CPU yang membuat proses tidur tanpa gangguan bertanggung jawab untuk melacak iowait
waktu. CPU lain akan melaporkan waktu yang sama dengan waktu idle pada akhirnya karena mereka benar-benar menganggur. Apakah asumsi ini benar?
Selain itu, dengan asumsi ada permintaan IO yang panjang (artinya proses memiliki beberapa peluang untuk dijadwalkan tetapi tidak dijadwalkan karena IO tidak lengkap), bagaimana CPU tahu ada "pending IO"? Dari mana informasi itu diambil? Bagaimana sebuah CPU dapat mengetahui bahwa beberapa proses ditidurkan beberapa saat untuk diselesaikan oleh IO karena salah satu CPU dapat membuat proses tersebut tertidur. Bagaimana status "IO tertunda" ini dikonfirmasi?