fioでIO性能を測る

fioでIO性能を測る方法を説明します.
かなり難しいです.
Debian 5.10.0-11 で行います.

インストール

su -
apt -y install fio
fio --version

結果

fio-3.25

ベンチマーク定義 0 (最小構成)

a.fio  という以下の内容のファイルを作ります

[job]
size=128m

動作の説明

カレントディレクトにファイルが作成され,
そのファイルに対する操作が行われる.
操作: read (Sequential read, 初期設定)
block size: 4KB (初期設定)
total I/O size: 128MB
ファイル名: job.0.0

4KBの操作を合計128MB行うので,read操作は32768回行われる.
job.0.0 というファイル(128MB以上)がなければ作成され,あればそれが使用される.

実行方法

fio a.fio

実行結果

$ fio a.fio
job: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.25
	:
	(略)
	:
Run status group 0 (all jobs):
   READ: bw=736MiB/s (771MB/s), 736MiB/s-736MiB/s (771MB/s-771MB/s), io=128MiB (134MB), run=174-174msec

Disk stats (read/write):
  sda: ios=407/0, merge=0/0, ticks=77/0, in_queue=77, util=52.24%

コメント

省略しすぎて,初期設定を知らないと理解しづらい.もう少し書いた方が分かりやすい.

ベンチマーク定義 1 (ランダムリード)

[job]
rw=randread
size=128m
filename=/tmp/abc
bs=1k

説明

/tmp/abcというファイルが作成され,
そのファイルに対するrandread(ランダムリード)操作が行われる.
操作: randread
block size: 1KB
total I/O size: 128MB
ファイル名: /tmp/abc

128MB/1KB = 131072 回のI/O操作が行われる.

ベンチマーク定義 2 (ランダム/シーケンシャル リードライト)

[global]
size=128m
filename=/tmp/abc
bs=1k

[job0]
rw=randread

[job1]
rw=randwrite

[job2]
rw=read

[job3]
rw=write

説明

[global]で書いた設定は,すべてのジョブ( [job0]~[job3])で有効.
[job0]は,[global]の設定を引き継ぎつつ,randread操作を指定.

よって
[job0]
操作: randread
block size: 1KB
total I/O size: 128MB
ファイル名: /tmp/abc
となる.

同様に,以下の様になる.
[job1]
操作: randwrite
block size: 1KB
total I/O size: 128MB
ファイル名: /tmp/abc

[job2]
操作: read (Sequential read)
(略)

[job3]
操作: write (Sequential write)
(略)

コメント

すべてのジョブ( [job0]~[job3])は、同時に行われます。

この記事が気に入ったらサポートをしてみませんか?