小ネタ Raspi3+Ubuntu16.04+SDCZ48-128G Fio
Raspi3でベンチマークする
- RaspberryPi 3はElement14製の方
- ubuntuは公式の
ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz
を利用 - SDCZ48-128GについてはSMARTの値が正しく参照できず
ベンチマーク上の留意点
ハードウェア情報
- メモリ 1GB
root@ubuntu:~# free --si -mw total used free shared buffers cache available Mem: 942 37 596 5 19 289 870 Swap: 0 0 0
- CPU ARM 4スレッド
root@ubuntu:~# cat /proc/cpuinfo | grep "model name" | uniq -c 4 model name : ARMv7 Processor rev 4 (v7l)
- USB
ubuntu@ubuntu:~$ lsusb | grep San Bus 001 Device 005: ID 0781:5581 SanDisk Corp. Ultra Bus 001 Device 004: ID 0781:5581 SanDisk Corp. Ultra ubuntu@ubuntu:~$ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
ベンチマーク環境
- マウント状態
root@ubuntu:~# mkdir /mnt/USB01 root@ubuntu:~# mount -t ext4 -o noatime,discard /dev/sda1 /mnt/USB01/ root@ubuntu:~# df /mnt/USB01/ Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 119269620 60984 113127000 1% /mnt/USB01 root@ubuntu:~# mount | grep USB /dev/sda1 on /mnt/USB01 type ext4 (rw,noatime,discard,data=ordered)
ベンチマーク実施
- ベンチマーク用dir掘って移動
root@ubuntu:~# mkdir /mnt/USB01/fio root@ubuntu:~# cd /mnt/USB01/fio
- 設定は後々比較するものでもない小ネタなので手抜き。重いものはメモリで死ぬだろうと予測して軽めのベンチ
root@ubuntu:/mnt/USB01/fio# 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 | grep iops= read : io=882528KB, bw=14707KB/s, iops=3676, runt= 60009msec root@ubuntu:/mnt/USB01/fio# 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 | grep iops= write: io=627904KB, bw=10463KB/s, iops=2615, runt= 60010msec root@ubuntu:/mnt/USB01/fio# 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 | grep iops= read : io=158516KB, bw=2639.8KB/s, iops=659, runt= 60050msec root@ubuntu:/mnt/USB01/fio# 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 | grep iops= write: io=109504KB, bw=1823.2KB/s, iops=455, runt= 60064msec
設定の整形
- size 30m ... 特に数値に根拠なし
- numjobs 4 ... スレッド数に合わせる
- iodepth 8 ... スレッド数との積が32になるよう設定
- blocksize 4k
- time_based , runtime=60 , overwrite=1
- ioengine libaio
結果の整形
test | total io | bw | iops | runtime |
---|---|---|---|---|
Seq_Read | io=882528KB | bw=14707KB/s | iops=3676 | runt= 60009msec |
Seq_Write | io=627904KB | bw=10463KB/s | iops=2615 | runt= 60010msec |
Rand_read | io=158516KB | bw=2639.8KB/s | iops=659 | runt= 60050msec |
Rand_write | io=109504KB | bw=1823.2KB/s | iops=455 | runt= 60064msec |
まとめ
- 同じUSBメモリで他の環境で試していないため断言できないが遅い
- Read100MB/s以上を謳っているがシーケンシャルでも14MB/s
- USB2.0でもよく言われている実効速度目安が30MB/s程度のためそれと比較しても遅い
- RW共にランダムで大きく値が落ちた
- ラズパイは速度期待するものではないので周辺機器は消費電力を基準に選んだ方がよさそう
追記もあるよ
いつもの筐体でも試した
- スペックは過去記事を参考に http://e6zout.hatenablog.jp/entry/2016/07/27/012156
- ベンチマークの設定やUSBメモリ側のファイルシステム、マウント設定等は変更なし
USB
- 3.0で認識されていることを確認
[root@comicsong fio]# lsusb | grep San Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra [root@comicsong fio]# lsusb -s 2:2 Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra [root@comicsong fio]# lsusb -t | grep -A1 "Bus 02" /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
結果
やたらと遅い。あまりにも遅いので複数回やったらムラが酷い
- 1回目
read : io=304356KB, bw=5070.1KB/s, iops=1267, runt= 60020msec write: io=731308KB, bw=10287KB/s, iops=2571, runt= 71088msec read : io=181856KB, bw=3028.8KB/s, iops=757, runt= 60043msec write: io=72568KB, bw=858634B/s, iops=209, runt= 86544msec
- 2回目
read : io=348264KB, bw=5802.4KB/s, iops=1450, runt= 60021msec write: io=814824KB, bw=11048KB/s, iops=2762, runt= 73752msec read : io=182780KB, bw=3044.4KB/s, iops=761, runt= 60040msec write: io=42260KB, bw=573176B/s, iops=139, runt= 75499msec
- 3回目
read : io=427492KB, bw=7122.1KB/s, iops=1780, runt= 60016msec write: io=850004KB, bw=14165KB/s, iops=3541, runt= 60008msec read : io=81048KB, bw=1292.2KB/s, iops=323, runt= 62724msec write: io=12900KB, bw=185029B/s, iops=45, runt= 71392msec
明日にでもこの筐体で parted
からやり直して比較する