【ただの独り言】HDDの速度計測 for Linux

HDD(はーどでぃすくどらいぶ)の速度計測のお話。

 システムを組み上げるとき、特に組み込みのシステムの場合、HDDとかの速度が気になっちゃうときがあったり無かったりラジバンダリ。無論、HDDの仕様でも読めば理論値は書いているのですが、如何せん理論値。
 そういうわけで、プログラム(というほどでもない)上でHDD、そのWR(write/read)速度を図ってみようという実験。
 使用するコマンドは2つ。hrparmとddコマンド。詳細はmanコマンドにお任せします。ぐぐれば出てきますし。

% hdparm -t /dev/hda1
% dd if=/dev/zero of=/tmp/testimg bs=1M count=1024
 hdparm:読み出し速度の計測に使用する。 -t オプションでキャッシュに無いファイルを読み出しする。 -T オプションだと、キャッシュのファイルを読み込むらしい。つまり T オプションのほうが、計測結果は速い。/dev/hda1は読み込みたいファイルパス。計測したいドライブでも指定してくれ。
 dd:書き込み速度の計測に使用する。ifはinputfileの略(本当かは知らないが意味的にはあってるはず)、上記の場合は /dev/zero からデータを読み取ってる。/dev/zeroこれはちょっと特殊で、結果は0が返ってくる。興味があったら各自調べてください。ofはoutputfileの略(本当にあっているかry)、指定されたパスにファイルを書き込む。bsはブロックサイズの略(本当ry)、一回に使用するサイズを指定する。個別にibs、obsとかも指定可能。count、これは1024かい読み書きしてくれ、と指定してる。

で、やっぱり複数実行して平均値を取りたくなるのが人情。以下が、それぞれのシェルスクリプト。あってるか、実行してないので鵜呑みにしないこと。ある著作家の言葉を借りるなら「バグを見つけるのも勉強。」である。

#/bin/sh

for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];
do
 sleep 1;
 echo $’\n$i;
 hdparm -t /dev/hda1;
done
#/bin/sh

for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];
do
 sleep 1;
 echo $’\n$i;
 time dd if=/dev/zero of=/tmp/testimg bs=6M count=10;
done