忍者ブログ

one's way

個人の趣味で色々な物を触ったり、検証した内容等纏めたブログです。

【Unix】fioの備忘録

最終更新日:2019/05/19

先日購入したラズパイ3B+でベンチマークを動かして見たときのまとめ(パート2)です。
ラズパイで上で使用しているMicroSDカードの性能を知りたいので、何か無いか探したところ、
このfioが見つかったので試したまとめです。

今度PC(Ubuntu)でもやってみようと思うので、その為の備忘録です。

0.目次



1.検証対象
2.fioの導入・実行手順
3.実行結果
3-1)ラズパイ3B+


1.検証対象



  ①Raspberry Pi 3B+(以下ラズパイ3B+)
   CPU:
Broadcom BCM2837B0, Cortex-A53 (ARMv8)1.4GHz
   MEM:1GB
   OS :raspberrypi 4.14.98-v7+
   備考 :MicroSDは"SAMSUNG EVO 32GB Class10 UHS-I"

  ※今後追加予定


2.fioの導入・実行手順



○導入編
sudo su -
apt-get install -y libaio-dev
git clone -b fio-3.13 git://git.kernel.dk/fio.git
cd fio
./configure && make && sudo make install
cd ..

※fioはのバージョンはこちらで確認出来る

・[外部サイト]git.kernel.dk Git(fio.git/summary)

○実行編

①Seq_Read(シーケンシャルリード)
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=60 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=read

②Seq_Write(シーケンシャルライト)
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=60 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=write

③Random_Read(ランダムリード)
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=60 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=randread

④Random_Write(ランダムライト)
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=60 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=randwrite


項目 説明
--size ファイルサイズ
--numjobs 平行実行数 4コアで4なら全コアを使用する
--iodepth I/O非同期の場合に、どの程度キューイングするか?
※詳細は不明
--time_based 指定した場合、指定秒になるまで繰り返す
※runtimeの時間まで繰り返させる指定
--runtime 指定秒に到達するまで繰り返す
(60の場合、60秒で終了する)
--overwrite ファイルを上書きするか否か
(1=する/0=しない)
--ioengine I/Oのモードを指定するが、種類が多い。
詳細はman等を参照すると良い
(manでは37個・・)
libaioはLinuxネイティブ非同期の意味
--bs ブロックサイズ
--group_reporting 結果をグループ化させる
--direct I/O engineと使用?
(詳細不明)
--name=test ジョブ名
--rw read:シーケンシャルリード
write:シーケンシャルライト
randread:ランダムリード
randwrite:ランダムライト

※rw,readwrite(シーケンシャルR/W)やrandrw(ランダムR/W)でも可能

※オプションの詳細は以下を参照
・[外部サイト]1. fio - Flexible I/O tester rev. 3.13

他にも便利そうな"kb_base"(単位してい)等がいくつか・・・
時間のある時等に眺めるのが良さそうです。


3.実行結果


3-1)ラズパイ3B+

①Seq_Read(シーケンシャルリード)
fio-3.13
Starting 4 processes
Jobs: 4 (f=4): [R(4)][100.0%][r=18.6MiB/s][r=4752 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=5689: Thu May 16 22:52:20 2019
  read: IOPS=4741, BW=18.5MiB/s (19.4MB/s)(1112MiB/60006msec)
    slat (usec): min=8, max=2196, avg=22.69, stdev= 9.00
    clat (usec): min=2206, max=30049, avg=6712.97, stdev=462.79
     lat (usec): min=2233, max=30072, avg=6737.97, stdev=462.81
    clat percentiles (usec):
     |  1.00th=[ 6521],  5.00th=[ 6652], 10.00th=[ 6652], 20.00th=[ 6652],
     | 30.00th=[ 6652], 40.00th=[ 6652], 50.00th=[ 6718], 60.00th=[ 6718],
     | 70.00th=[ 6718], 80.00th=[ 6718], 90.00th=[ 6718], 95.00th=[ 6783],
     | 99.00th=[ 6849], 99.50th=[ 7177], 99.90th=[ 9241], 99.95th=[14877],
     | 99.99th=[30016]
   bw (  KiB/s): min=17975, max=19500, per=99.97%, avg=18962.08, stdev=48.56, sa                mples=480
   iops        : min= 4493, max= 4874, avg=4740.28, stdev=12.16, samples=480
  lat (msec)   : 4=0.01%, 10=99.90%, 20=0.06%, 50=0.03%
  cpu          : usr=1.66%, sys=3.32%, ctx=36252, majf=0, minf=120
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=284544,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: bw=18.5MiB/s (19.4MB/s), 18.5MiB/s-18.5MiB/s (19.4MB/s-19.4MB/s), io=11                12MiB (1165MB), run=60006-60006msec

Disk stats (read/write):
  mmcblk0: ios=35488/5, merge=248444/1, ticks=238090/130, in_queue=238190, util=                99.90%

②Seq_Write(シーケンシャルライト)
fio-3.13
Starting 4 processes
Jobs: 4 (f=4): [W(4)][100.0%][w=5061KiB/s][w=1265 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=5705: Thu May 16 22:55:15 2019
  write: IOPS=1278, BW=5113KiB/s (5235kB/s)(300MiB/60021msec)
    slat (usec): min=10, max=82090, avg=48.32, stdev=828.34
    clat (msec): min=3, max=103, avg=24.97, stdev=14.11
     lat (msec): min=3, max=119, avg=25.02, stdev=14.14
    clat percentiles (msec):
     |  1.00th=[   13],  5.00th=[   14], 10.00th=[   14], 20.00th=[   18],
     | 30.00th=[   19], 40.00th=[   19], 50.00th=[   21], 60.00th=[   24],
     | 70.00th=[   24], 80.00th=[   29], 90.00th=[   54], 95.00th=[   63],
     | 99.00th=[   69], 99.50th=[   73], 99.90th=[   91], 99.95th=[   96],
     | 99.99th=[  102]
   bw (  KiB/s): min= 3296, max= 6400, per=100.00%, avg=5111.85, stdev=126.49, samples=480
   iops        : min=  824, max= 1600, avg=1277.92, stdev=31.62, samples=480
  lat (msec)   : 4=0.01%, 10=0.07%, 20=49.02%, 50=39.91%, 100=10.97%
  lat (msec)   : 250=0.02%
  cpu          : usr=0.51%, sys=1.11%, ctx=9801, majf=0, minf=91
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,76718,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
  WRITE: bw=5113KiB/s (5235kB/s), 5113KiB/s-5113KiB/s (5235kB/s-5235kB/s), io=300MiB (314MB), run=60021-60021msec

Disk stats (read/write):
  mmcblk0: ios=0/9590, merge=0/66964, ticks=0/238670, in_queue=238780, util=99.88%

③Random_Read(ランダムリード)
fio-3.13
Starting 4 processes
Jobs: 4 (f=4): [r(4)][100.0%][r=9181KiB/s][r=2295 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=5715: Thu May 16 22:58:12 2019
  read: IOPS=2299, BW=9199KiB/s (9419kB/s)(539MiB/60014msec)
    slat (usec): min=10, max=1116, avg=31.78, stdev= 8.23
    clat (usec): min=1000, max=126104, avg=13864.99, stdev=8253.40
     lat (usec): min=1016, max=126137, avg=13899.28, stdev=8253.23
    clat percentiles (usec):
     |  1.00th=[ 1532],  5.00th=[ 1696], 10.00th=[ 2114], 20.00th=[ 2999],
     | 30.00th=[13173], 40.00th=[15270], 50.00th=[16319], 60.00th=[17171],
     | 70.00th=[17957], 80.00th=[18744], 90.00th=[20055], 95.00th=[21627],
     | 99.00th=[36963], 99.50th=[50070], 99.90th=[65799], 99.95th=[69731],
     | 99.99th=[86508]
   bw (  KiB/s): min= 7960, max=10544, per=100.00%, avg=9197.55, stdev=118.21, samples=480
   iops        : min= 1990, max= 2636, avg=2299.23, stdev=29.55, samples=480
  lat (msec)   : 2=7.58%, 4=18.21%, 10=1.83%, 20=61.15%, 50=10.75%
  lat (msec)   : 100=0.48%, 250=0.01%
  cpu          : usr=1.11%, sys=2.89%, ctx=136811, majf=0, minf=112
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=138012,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: bw=9199KiB/s (9419kB/s), 9199KiB/s-9199KiB/s (9419kB/s-9419kB/s), io=539MiB (565MB), run=60014-60014msec

Disk stats (read/write):
  mmcblk0: ios=136085/5, merge=1601/1, ticks=1890700/120, in_queue=1890800, util=99.88%


④Random_Write(ランダムライト)
fio-3.13
Starting 4 processes
Jobs: 4 (f=4): [w(4)][100.0%][w=4000KiB/s][w=1000 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=5725: Thu May 16 23:02:00 2019
  write: IOPS=201, BW=806KiB/s (826kB/s)(47.3MiB/60037msec)
    slat (usec): min=15, max=1270.6k, avg=1179.63, stdev=29598.96
    clat (usec): min=1925, max=5289.5k, avg=157528.59, stdev=452824.16
     lat (usec): min=1964, max=5289.5k, avg=158710.84, stdev=456105.58
    clat percentiles (msec):
     |  1.00th=[    3],  5.00th=[    4], 10.00th=[    5], 20.00th=[    8],
     | 30.00th=[   32], 40.00th=[   37], 50.00th=[   40], 60.00th=[   43],
     | 70.00th=[   46], 80.00th=[   55], 90.00th=[  165], 95.00th=[ 1368],
     | 99.00th=[ 2165], 99.50th=[ 2635], 99.90th=[ 3608], 99.95th=[ 4665],
     | 99.99th=[ 5201]
   bw (  KiB/s): min=   31, max= 4656, per=100.00%, avg=1256.50, stdev=415.49, samples=307
   iops        : min=    7, max= 1164, avg=313.99, stdev=103.89, samples=307
  lat (msec)   : 2=0.01%, 4=7.68%, 10=17.71%, 20=1.83%, 50=49.38%
  lat (msec)   : 100=11.96%, 250=2.64%, 500=1.07%, 750=0.74%, 1000=0.90%
  cpu          : usr=0.15%, sys=0.27%, ctx=11992, majf=0, minf=89
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=99.8%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,12102,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
  WRITE: bw=806KiB/s (826kB/s), 806KiB/s-806KiB/s (826kB/s-826kB/s), io=47.3MiB (49.6MB), run=60037-60037msec

Disk stats (read/write):
  mmcblk0: ios=0/11948, merge=0/42, ticks=0/1857500, in_queue=1858100, util=99.88%


スループットを見る場合のポイントは、下の方の”bw=”をみる

○ベンチ結果まとめ
項目 スループット(MB/s) スループット(KB/s)
Seq_Read 19.4 19400
Seq_Write 5.2 5235
Random_read 9.4 9419
Random_write 0.8 826

○参考(H2testwの実行結果)
Windows上でH2testwはこちら
・Read  65.8MB/s ・Write 26.2MB/s

やはりラズパイだと遅くなる模様です。
一説には、基板のMicroSDポートよりUSBポートの方が早い等の記述もあるので、少しずつ試せればと思います。

速度の結果はともあれ、試行錯誤する過程も楽しいものですよね。
とりあえず次はジャンクPCのVersaproでも走らせてみる予定です。



○更新履歴

以上

タグもどき:unix ラズパイ Bench Mark
PR