【RotorHazard】Raspberry Pi 3Bを用いたUSB2.0規格でのUSBブートとベンチマークテスト

# 25. これはあえて買ってでも手に入れるべき性能！

この記事はFPVドローン ラップ計測システム【RotorHazard】をRaspberry Piで作成するにあたってのTipsをまとめたものです。ですが一般的なラズパイ構築方法としても参考になるかと思いますので、ぜひご活用ください。

### 25-1. USB-SSDのベンチマーク測定

もうね、完全にRotorHazardの構築のところからは離れちゃっていてごめんなさいｗ。でも皆さんパフォーマンスは気になるでしょ？
ラズパイ3Bは、USB2.0規格。最新のラズパイと比べても全然劣ってしまうものの、やはりIOの転送はmicroSDよりも速いために、状況によってはSSDを使った運用というものも検討する必要が出てくることも考えられます。それにお値段や手元のパーツの組み合わせでは壊れない、ハード的な堅牢化、高耐久性を考えたらSSD運用は **あり！** だと思っています。

RotorHazardのケース問題は出てきますが、ここもまた皆さんのアイディアで乗り切ってくださいｗ。っということで、ベンチマークをやってみたいと思います。
```
sudo parted -l

Model: CT240BX5 00SSD1 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      4194kB  273MB  268MB  primary  fat32        lba
 2      273MB   240GB  240GB  primary  ext4
```

今回使用したストレージ仕様はこちらです。

- ストレージ: Crucial製 BX500 CT240BX500SSD1 (240GB)
- 転送仕様:   SATA 6.0Gb/s対応
- USB規格:    USB2.0 (480Mbps ⇒ 60MB/sec ⇒ 57.24MiB/sec)

論理値として60MB/s(57.24MiB/sec)なのですが、USB2.0のクチに挿してWindowsでメジャーなストレージベンチマークソフト **CristalDiskMark** 等のベンチマークを測定しても、大体は30数MB/secという値になります。

```
sysbench fileio prepare --threads=4 --file-test-mode=rndrw


sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

128 files, 16384Kb each, 2048Mb total
Creating files for the test...
Extra file open flags: (none)
Creating file test_file.0
Creating file test_file.1
～～～省略～～～
Creating file test_file.126
Creating file test_file.127
2147483648 bytes written in 60.88 seconds (33.64 MiB/sec).
```

むむっ！これはｗ
**33.64 MiB/sec** って結構良い数値、microSDから比べても3.4倍ぐらいの性能差があるってことじゃないっすか？シャア大佐のように3倍以上？これは魅力！ｗ
では、次に各種詳細のベンチマークを見てみましょう。
```
sysbench fileio run --threads=4 --file-test-mode=rndrw


sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time

Extra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      602.88
    writes/s:                     401.72
    fsyncs/s:                     1331.81

Throughput:
    read, MiB/s:                  9.42
    written, MiB/s:               6.28

General statistics:
    total time:                          10.0859s
    total number of events:              23066

Latency (ms):
         min:                                    0.02
         avg:                                    1.73
         max:                                   59.65
         95th percentile:                        3.82
         sum:                                39952.20

Threads fairness:
    events (avg/stddev):           5766.5000/109.19
    execution time (avg/stddev):   9.9880/0.00
```

先日のmicroSDと比較してみても数値的にはやはり格段に良い印象を受けます。
これは…もしおうちでSSDデバイスがすぐに手元で利用できるようであれば、ぜひ検討してみてください。まあRotorHazardでなくても、何かラズパイで作らなければいけないようなものがあればチャレンジしてみてくださいー。

```
sysbench fileio cleanup


sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Removing test files...
```
最後に忘れずにテストファイルを消して終了します。

ラズパイ構築編のつづきはこちら

https://qiita.com/tmac116/items/8d68c4c58092ebd2ace2?1