Solusi 1:
Anda dapat menggunakan monitor I/O seperti iotop, tetapi ini hanya akan menampilkan proses atau utas dengan operasi I/O saat ini.
Jika Anda perlu menjelajahi proses yang menunggu I/O, gunakan jam tangan untuk memantau proses dengan bendera STAT 'D' seperti di bawah:
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
Solusi 2:
ps axu
dan cari proses yang berada dalam status "D". Berdasarkan halaman manual ps(1), proses yang berada dalam status D berada dalam kondisi tidur yang tidak dapat diinterupsi, yang hampir selalu berarti 'menunggu IO'. Sayangnya, menghentikan proses ini biasanya tidak mungkin dilakukan.
Solusi 3:
Jawaban Zanchey adalah yang terbaik yang saya tahu untuk mencari tahu apa yang menunggu IO.
Ketika Anda mengatakan server Anda sedang dalam beban tinggi, apa yang Anda maksud dengan itu? Ada sesuatu yang lambat merespons?
Jika Anda bertanya-tanya apakah Disk IO Anda adalah hambatannya, saya akan menggunakan perintah iostat (bagian dari paket sysstat) untuk melihat apakah disk benar-benar berada di bawah beban berat.
Contoh:
[[email protected]: ~] iostat -x 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
2.38 34.71 2.64 1.18 0.00 59.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.11 17.35 2.21 20.31 46.57 301.40 15.45 2.27 100.66 1.48 3.34
sda1 0.10 17.31 2.21 20.31 46.48 301.10 15.44 2.27 100.66 1.48 3.34
sda2 0.00 0.00 0.00 0.00 0.00 0.00 3.50 0.00 30.00 30.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 18.44 0.00 677.67 512.61 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
6.22 0.00 4.31 0.00 0.00 89.47
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00