Linuxでハードディスクの負荷を監視するための優れたコマンドラインユーティリティはありますか? top
のようなものですが、ディスクアクティビティを監視しています。 CPU使用率。
より具体的には、実行するプログラムのさまざまな部分でいくつかの最適化を行った後の一部の(重い負荷の)サーバーでは、今のボトルネックは単にディスク上のファイルへのログ記録にあると思います。しかし、サーバーが処理できるトラフィックの量を評価することは非常に困難です。
私の理想的なツールは、「現在、ディスク帯域幅の35%を使用しています」と表示されるツールです。何か案は?
iostat
ツールを使用すると、これをかなり適切に測定できます。
% iostat -dx /dev/sda 5
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.78 11.03 1.19 2.82 72.98 111.07 45.80 0.13 32.78 1.60 0.64
ディスク使用率は最後の列にリストされています。これは次のように定義されます
I/O要求がデバイスに発行されたCPU時間の割合(デバイスの帯域幅使用率)。この値が100%に近い場合、デバイスの飽和が発生します。
iotop は、各プロセスが使用している量IOを調べるtopのバージョンです。これは、標準のUbuntuリポジトリにあります。RHELにあるのか、RHELにあるのかはわかりませんFedoraですが、そうでなければなりません。
Iotopをサポートしていない古いカーネル(たとえばCentOS 5.xまたはRHEL 5.x)の場合は、代わりにtopioを使用してください(ここに記載: http://yong321.freeshell.org/freeware/pio.html#linux 。io統計は/ proc // ioに依存し、iotopと同様の機能を提供します。詳細はリンクを参照してください。
コメントでサスタニンが示唆しているように、/sys/block/sda/stat
または/proc/diskstats
で指定された値を直接処理できます。これは、言及されている他のどのツールも利用できず、簡単にインストールできない場合に役立ちます。
たとえば、(IIUC)次のようなもの(bashの場合)は、1秒あたりの読み取り数を示します。
OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
sleep $DT
NEW=`awk '{print $1}' /sys/block/sda/stat`
echo $((($NEW-$OLD)/$DT))
OLD=$NEW
done
https://www.kernel.org/doc/Documentation/iostats.txt および https://を参照してくださいドキュメントについては、www.kernel.org/doc/Documentation/block/stat.txt 。
Iotop/top/iftopの機能をすべて1か所にまとめ、システムの重要な部分を強調表示する atop を確認する必要があります。
Nmonツールをご覧になることをお勧めします。それはあなたが後で閲覧するためにファイルにデータを記録するだけでなく、多くのシステムパラメータのライブロードを示します。これは無料のツールです ここ :
総帯域幅を調べるには、hdparm -T /dev/sda
バッファキャッシュ(fileio)のパフォーマンスをテストするhdparm -t /dev/sda
デバイスの読み取りパフォーマンスをテストする
例:私のラップトップはSATAディスクから82MB /秒、キャッシュから2GB /秒を取得します。私のdekstopは、キャッシュから12GB /秒、ハードウェアRAIDアレイから500MB /秒を取得します。サーバークラスのハードウェアでは、これらの最後の数値が2倍になる可能性があると思います。
先読みを256より高く設定すると、4096が最適です
for i in 128 256 512 1024 2048 4096 8192 16384 32768
do
hdparm --setra $i
for j in 1 2 4 8 16 32
do
time dd if=/dev/sda of=/dev/null bs="$j"k count=<fixthis> 1GB / blocksize
done
done
異なるブロックサイズと異なる先読みで1GBを読み取る回数
ハードディスクの負荷を示すための標準ツールはiostat
です。
ディスクの帯域幅がわからないため、使用している%ageディスク帯域幅はわかりません。いずれの場合でも、ディスクには、連続したデータの大規模な転送について、メーカーが引用した数値しかありません。
RRDtoolはあなたがやりたいことをするべきだと思います here デーモンを使用してシステムデータをダンプし、好きなように処理できるようにします。システムの負荷を測定するグラフなどを作成するためによく使用しました。
htopはプロセス情報をチェックするための素晴らしいツールです。列を追加または削除することができ、その中にプロセスの読み取り速度と書き込み速度があります。