回答:
iotopのようなI / Oモニターを使用できますが、現在のI / O操作があるプロセスまたはスレッドのみが表示されます。
I / Oを待機しているプロセスを参照する必要がある場合は、ウォッチを使用して、以下のようにSTATフラグ「D」のプロセスを監視します。
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
iowait
iotop
watch
ps
awk
ps
POSIXフラグを使用awk
して、異なるwatch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
方法で編集していました。-この方法で、列見出しと、stat、pid、およびコマンドを取得します。
ps axu
「D」状態にあるプロセスを探します。ps(1)のマンページに基づいて、D状態にあるプロセスは割り込み不可能なスリープ状態にあります。これはほとんどの場合、「IOの待機」を意味します。残念ながら、これらのプロセスを強制終了することは通常不可能です。
Zancheyの答えは、IOを待っているものを見つけるために知っている最高の方法です。
サーバーに高負荷がかかっていると言うとき、それはどういう意味ですか?特に反応が遅いものはありますか?
ディスクIOがボトルネックであるかどうか疑問に思っている場合は、iostatコマンド(sysstatパッケージの一部)を使用して、ディスクが実際に高負荷になっているかどうかを確認します。
例:
[kbrandt@kbrandt-opadmin: ~] 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
どのプロセスがブロックの読み取り/書き込み操作を行っているかのblock_dumpロギングを有効にします。
echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog
完了したら、ログファイルをスパムしないようにトレースを無効にします。
echo 0 > /proc/sys/vm/block_dump