Solarisや他のUnix環境でディスクI/O速度を手っ取り早く計測する方法

以前、H/W関係の仕事をしていた頃に新しいSolarisマシンがリリースされたことに伴うトレーニングや検証作業時に必ず試していたディスクI/Oの速度を測定するプチテクニックです。(^o^)/


Solaris上で以下の手順を実行します。

  • 準備作業としてtelnetなどを用いて2つの端末を開きます
  • 1つの端末上でダミーファイルを作成します

以下のコマンドを実行するとサイズが1GBの『1g』と言う名称のダミーファイルが作成可能です。引数の順番を覚えるの面倒なので、いつもこんな感じでサイズとファイル名を指定しています。(^-^;

# mkfile 1g 1g
  • 別の端末よりディスク毎のI/O速度を計測します。

以下のオプションでiostatを実行すると1秒間隔で各ディスク毎の性能が計測可能です。

# iostat -xtc 1
                  extended device statistics                      tty         cpu
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
sd6          0.0    0.0    0.0    0.0  0.0  0.0    2.1   0   0    0    9   4  3  0 94
ssd0         0.1    0.7    1.8   12.0  0.0  0.0   41.0   0   0
ssd1         0.0    0.2    2.2    6.5  0.0  0.0   32.7   0   0
nfs1         0.0    0.0    0.0    0.0  0.0  0.0    0.2   0   0
                  extended device statistics                      tty         cpu
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
sd6          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0    0  448   0 14 36 50
ssd0         0.0   68.6    0.0 40933.3  3.8 12.6  239.7  59 100
ssd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
nfs1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
                  extended device statistics                      tty         cpu
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
sd6          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0    0  453   0 14 29 58
ssd0         0.0   75.0    0.0 40768.6  3.8 11.2  199.5  42  99
ssd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
nfs1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
                  extended device statistics                      tty         cpu
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
sd6          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0    0  453   0 13 20 68
ssd0         0.0   60.0    0.0 41569.5  2.0 11.7  228.5  43 100
ssd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
nfs1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
#
  • 結果を確認します

上記の環境では、ssd0と言うデバイス名のディスクへの出力が約41MB/秒の性能となっています。

  • 作成したダミーファイルを削除します

ちなみにSolaris以外のUnixの場合なら、以下のような手順でディスクI/O速度が計測可能かと思います。(以下の手順もSolarisで実施してますが・・・)

  • 事前準備として計測対象以外のディスクにサイズの大きなテスト用ファイルを用意します

この場合、インストーラやログファイルなど何でも良いので100MBくらいの大きさのファイルを用意します。(もっと大きくても良いです)

  • cpコマンドの処理時間をtimeコマンドで計測します

以下の手順では/tmpディレクトリに有る100MBのファイルをコピーする時間を測定しています。Solarisでは/tmpはメモリディスクとなります。

# time cp -p /tmp/100m .
0.00u 0.79s 0:02.39 33.0%       <= 2.39秒で終了しました
  • Unixに付属する計算プログラムで速度を算出します(任意)
# bc
100/2.39               <= 100MBを2.39秒で割ると約41MB/秒の速度だったことが分かりました!
41
quit
#

上記の手順を利用するとベンチマーク作業でディスクI/Oがボトルネックになっている疑いが有るような場合に、ちょっとした確認ができて便利かと思います。(^o^)v