fioでtrimのベンチマーク方法教がわからないのとベンチマークソフトのバージョン差異

trimのベンチマーク方法がわからない

  • 前回のdiscardオプションで触れたtrimについてもfioではベンチマークができる
  • そのためtrimについて比較を行おうとしたところエラーが出た
[comicsong@comicsong fio]$ fio iotest.ini -rw trim
test: (g=0): rw=trim, bs=4K-4K/4K-4K/4K-4K, ioengine=psync, iodepth=1
...
fio-2.13-18-gc915
Starting 8 processes
fio: pid=30434, err=25/file:ioengines.c:307, func=td_io_queue, error=Inappropriate ioctl for device
fio: pid=30435, err=25/file:ioengines.c:307, func=td_io_queue, error=Inappropriate ioctl for device
fio: pid=30432, err=25/file:ioengines.c:307, func=td_io_queue, error=Inappropriate ioctl for device
  • fioのエラーかと思い最新版を導入 github.com
  • configure , make , sudo make install で入れたところ今度は ioengine でも失敗する
  • libaio-devel パッケージ不足が原因のため sudo yum install libaio-devel して再度make

  • trimについても同様の問題かと思ったが、trimコマンドのパッケージがわからず

    • fstrim コマンドは util-linux なので最新版が導入済み
  • 複数パッケージを入れて都度makeしたが結局このエラーは解消されず

fioのバージョン違いによるベンチマークスコア比較

  • 結果としてrpmパッケージ版とソースインストール版がバージョン違いで共存している状態になった
  • ベンチマークはソフトウェアバージョンも同一であることが望ましいが実際どの程度差があるのだろうとテストしてみた
[comicsong@comicsong fio]$ fio --version
fio-2.2.8
[comicsong@comicsong fio]$ /usr/local/bin/fio --version
fio-2.13-18-gc915
  • 環境はこちらと共通 e6zout.hatenablog.jp
  • 設定はブレ幅が小さくなるようにruntimeを5分に変更した
[global]
size=500m
runtime=300
loops=3
  • 2.2.8 (RPMパッケージ版)で実施
[comicsong@comicsong fio]$ fio iotest.ini -rw randwrite | head -n 7
test: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=4
...
fio-2.2.8
Starting 8 processes

test: (groupid=0, jobs=8): err= 0: pid=30534: Thu Jul 28 22:59:39 2016
  write: io=42664MB, bw=145617KB/s, iops=36404, runt=300021msec
  • 2.13-18 (ソースインストール版)で実施
[comicsong@comicsong fio]$ /usr/local/bin/fio iotest.ini -rw randwrite | head -n 7
test: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=4
...
fio-2.13-18-gc915
Starting 8 processes

test: (groupid=0, jobs=8): err= 0: pid=30605: Thu Jul 28 23:11:44 2016
  write: io=43638MB, bw=148933KB/s, iops=37233, runt=300034msec
  • まとめ
    • trim詳しい方いらっしゃいましたら教えてください
    • fioバージョンによる差異は 2.2.82.13-18 であれば結果は誤差の範囲だった