it-swarm-id.com

Linux - Bagaimana saya bisa melihat apa yang menunggu disk IO

Saya memiliki server yang memiliki beban sangat tinggi. Tidak ada yang melompat ke arah saya dalam hal penggunaan CPU, dan itu tidak bertukar.

Saya pikir itu menyebabkan beberapa proses menunggu disk IO, dan saya ingin melihat apa yang menunggu.

Apakah ada program yang akan menunjukkan kepada saya proses apa yang menunggu untuk IO? Saya tahu tentang iotop tapi itu menunjukkan apa yang sedang dilakukan IO.

Atau ini pertanyaan konyol? (Jika demikian jelaskan caranya :))

42
Rory

Anda dapat menggunakan monitor I/O seperti iotop, tetapi hanya akan menunjukkan kepada Anda proses atau utas dengan operasi I/O saat ini.

Jika Anda perlu menelusuri proses menunggu I/O, gunakan arloji untuk memantau proses dengan bendera STAT 'D' seperti di bawah ini:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"
47
Ali Mezgani

ps axu dan cari proses yang dalam kondisi "D". Berdasarkan ps (1) manpage , proses yang dalam keadaan D berada dalam kondisi tidur yang tidak terputus, yang hampir selalu berarti 'menunggu IO'. Sayangnya, membunuh proses ini biasanya tidak mungkin.

18
Zanchey

Jawaban Zanchey adalah yang terbaik yang saya tahu untuk mencari tahu apa yang sedang menunggu IO.

Ketika Anda mengatakan server Anda berada di bawah beban tinggi, apa yang Anda maksud dengan itu? Sesuatu yang lambat merespons?

Jika Anda bertanya-tanya apakah Disk Anda IO adalah hambatannya, saya akan menggunakan perintah iostat (bagian dari paket sysstat) untuk melihat apakah disk tersebut 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
16
Kyle Brandt

Aktifkan block_dump pencatatan proses apa yang sedang dilakukan operasi baca/tulis blok:

echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog

setelah selesai, nonaktifkan penelusuran agar Anda tidak mengirim spam file log Anda:

echo 0 > /proc/sys/vm/block_dump
0