それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

fio でHDD/SSDのブロックデバイスのベンチマークを取る

ブロックデバイスのベンチマークを取りたいと思いました。

ぱぱっとやる方法だと、 dd hdparm 等があるのですが、キャッシュなどいろいろ考えることも多いいので。今回は fio を試してみました。

まぁ普段の速度測定は dd でやっちゃうんだけどね。。。ネットワークは dd + ssh で。。。

fio のインストール

debian だと apt で一発ですね。さすがdebian

sudo apt install fio 

fio の確認

無事インストールされていることがわかる。

takuya@:~$ which fio
/usr/bin/fio

fio でテストする方法

fio でテストするためには、同じ条件でディスクを変えてテストすることになります。

このために、条件を一致させるための「ジョブファイル」というのを作るようです。

fio のジョブファイルのサンプル

takuya@:~$ cat myjob.fio
[Sequential-Read] # jobの名前
rw=read           # シーケンシャルでreadする
directory=/home/takuya/mnt/   # ベンチマークで使うディレクトリ
size=100m         # ベンチマークで使用するデータサイズ。キャッシュサイズを考慮して決める。
ioengine=libaio   # 非同期I/Oでテストする。指定しないとsync(同期I/O)になる。

[Sequential-Write]
rw=write          # シーケンシャルでwriteする
directory=/home/takuya/mnt/
size=100m
ioengine=libaio

[Random-Read]
rw=randread       # ランダムでreadする
directory=/home/takuya/mnt/
size=100m
ioengine=libaio

[Random-Write]
rw=randwrite      # ランダムでwriteする
directory=/home/takuya/mnt/
size=100m
ioengine=libaio

あとは実行

ジョブファイルを作ったら、コレを実行する。

takuya@:~$ fio myjob.fio

出力結果

結構あれこれ出力されるが、bw さえ見ておけば比較できると思う。

Sequential-Read: (groupid=0, jobs=1): err= 0: pid=19749: Wed Jan  4 20:35:30 2017
  read : io=102400KB, bw=48393KB/s, iops=12098, runt=  2116msec
Sequential-Write: (groupid=0, jobs=1): err= 0: pid=19750: Wed Jan  4 20:35:30 2017
  write: io=102400KB, bw=291738KB/s, iops=72934, runt=   351msec
Random-Read: (groupid=0, jobs=1): err= 0: pid=19751: Wed Jan  4 20:35:30 2017
  read : io=102400KB, bw=736685B/s, iops=179, runt=142337msec
Random-Write: (groupid=0, jobs=1): err= 0: pid=19752: Wed Jan  4 20:35:30 2017
  write: io=102400KB, bw=256000KB/s, iops=64000, runt=   400msec

読みづらい・・・出力単位をMB にしたい・・・unit を調べてみたけどkb_unit 設定しかなかった・・・

複数HDDのベンチマークを取って比較するジョブ・ファイルの構成

[HDD-A-Random-Write]
rw=randwrite      # ランダムでwriteする
directory=/home/takuya/mnt/
size=100m
ioengine=libaio
[HDD-B-Random-Write]
rw=randwrite      # ランダムでwriteする
directory=/tmp
size=100m
ioengine=libaio

こんな感じに複数作れば一回で終わる。

参考資料

http://qiita.com/smile-0yen/items/991ad53b8411364d9729

https://www.hitsumabushi.org/blog/2015/02/09/2227.html