どのプロセスが大量のディスクI / Oを引き起こしているかを判断しますか?


19

私はこの質問を見ました: ディスクへの重い書き込みを識別する方法は?

そして、私は以前にdstatatopを使用しました ...しかし、彼らはどのプロセスがディスクI / Oを引き起こしているのかを特定していないようです。たとえば、dstatから:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

dsk / totalの高さが2〜5 MB /秒であることを確認してください。しかし、「最も高価な」列を見てください-ここでは数バイト、そこには数キロバイトで、時には何もありません。「上」と同じようなものです。ディスク全体の使用率は高いが、個々のプロセスの使用率は低い。CentOS 5、カーネル2.6.18-53を実行しています。

新しいカーネルバージョンが必要ですか?たぶんどこかのシステム構成設定ですか?「トップ」のホームページでは、いくつかのカーネルパッチをインストールすることを推奨していますが、自分のカーネルを設定およびコンパイルするという面倒な作業は避けたいと思います。

回答:


26

iotop(link)for starter;)出力を投稿しているのを見たことはありません。

1:ロギングファイルシステムとatimeでほぼ同じ状況を経験しましたが、書き込みは増えました。

noatimeを使用して再マウントし、ファイルシステムのロギングをオフにして(テスト用のみ)、ファイルシステムがベースであるかどうか、前述のようにプロセスがベースであるかどうかを確認します。

2:このパーティションは、再構築中のraidアレイの一部ではないと思いますか?

3:非常に小さなファイルがたくさんあり(実際のブロックデバイスのブロックサイズやファイルシステムのブロックサイズよりもはるかに小さい)、それらの小さなファイルを読んでいる場合、システムからブロック全体を読み取ってしまいます。それらのブロックのうち何も読み込まれません。

4:上記に何も役に立たない場合は、次のコマンドを実行することにより、アクセスしたファイルのリストを常に取得できます

echo 1 > /proc/sys/vm/block_dump

システムのパフォーマンスが大幅に低下することに注意してください。手順は以前の投稿にあります。


1
約5秒で私を
倒してください

私はちょうど幸運になったが、質問に対する答えではなかったため、ほとんどすぐに答えを延長した;)
asdmin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.