解決策 1:
iotop などの I/O モニターを使用できますが、現在の I/O 操作があるプロセスまたはスレッドのみが表示されます。
I/O を待っているプロセスを参照する必要がある場合は、watch を使用して、以下のように STAT フラグ 'D' でプロセスを監視します。
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
解決策 2:
ps axu
「D」状態のプロセスを探します。 ps(1) マンページに基づくと、D 状態にあるプロセスは割り込み不可能なスリープ状態にあり、これはほとんどの場合「IO を待っている」ことを意味します。残念ながら、これらのプロセスを強制終了することは通常不可能です。
解決策 3:
Zanchey の答えは、IO を待っているものを見つけるために私が知っている最高のものです。
サーバーの負荷が高いと言うとき、それはどういう意味ですか?特に何か反応が遅いですか?
ディスク IO がボトルネックかどうか疑問に思っている場合は、iostat コマンド (sysstat パッケージの一部) を使用して、ディスクに実際に負荷がかかっているかどうかを確認します。
例:
[[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