fio(Flexible I/O Tester)とは
何を測るテストか
fio(エフアイオー)は、Linuxの開発者Jens Axboe(イェンス・アクスボー)氏が作った、ストレージ(SSDやHDD)の読み書き性能を測る無料のテストツールです。もともとはLinuxの入出力の仕組みをテストするために作られ、現在はLinuxのほか、Windows、macOS、FreeBSDなどでも動きます。最大の特徴は、読み書きのしかたを細かく指定できることです。順番に読む(シーケンシャル)か、ばらばらの場所を読む(ランダム)か、1回に読み書きするデータの大きさ(ブロックサイズ)、同時に送る命令の数(キュー深度)、同時に動かす作業の数などを設定し、実際の業務に近い負荷をかけて測れます。企業向けSSDの性能評価で広く使われています。
スコアの見方
主な結果は3つです。「IOPS(アイオーピーエス)」は1秒あたりに何回の読み書きができたかで、小さなデータをランダムに扱う速さを表し、高いほど良いです。「bw(帯域幅)」は1秒あたりに何MBのデータを読み書きできたかで、大きなファイルの扱いの速さを表し、高いほど良いです。「lat(遅延)」は1回の読み書きにかかった時間で、短いほど良いです。遅延は、命令を出すまでの時間(slat)と、命令から完了までの時間(clat)に分けて表示され、その合計がlatです。さらにclatは「99%」「99.9%」などのパーセンタイル(遅いほうから見て何%の位置か)でも表示されます。企業向けの用途では、平均だけでなく、まれに起きる遅い応答(99.9%の値など)が重要視されます。
比べるときの注意
(1)設定によって結果がまったく変わるため、数字だけを見ても意味がありません。ブロックサイズ(例:4KiBか128KiBか)、rw(読み書きのしかた)、iodepth(キュー深度)、numjobs(同時に動かす数)、direct(OSのキャッシュを使わない設定かどうか)を必ず結果と一緒に記録してください。(2)OSのキャッシュを使う設定で測ると、SSDではなくメモリの速さを測ってしまいます。通常はdirect=1で測ります。(3)書き込みテストは、指定した場所のデータを上書きします。データが入ったドライブで実行すると消えてしまうため、必ず空のドライブで行ってください。(4)SSDは使い始めと、長時間書き込み続けた後で性能が違います。企業向けの評価では、十分に書き込んで性能が落ち着いた状態で測るのが一般的です。(5)コマンドで操作するツールで、初心者には扱いが難しいです。
主に使われる型番のカテゴリ
企業向けSSD(U.2/U.3、E1.S/E3.S、エンタープライズNVMe)とサーバーのストレージの性能評価。中古のデータセンター撤去品SSDを検査するときに、同じ条件で測って公式仕様のIOPSと比べ、劣化や不良を見つけるのに使います。一般向けSSDを手軽に測るならCrystalDiskMarkのほうが向いています。