【速報】でお伝えした通りRaspberry Pi 3 Model “B+“ではmicroSDカード以外にUSBポートからも起動可能なので、どのストレージを起動ディスクとするかでアプリの実行速度が違います。
そこで、SDカードも含めた各種ストレージの中で、実際にどれが速いか調べてみることにしました。
調査対象のストレージ
① SanDisk Ultra microSDHC UHS-1 A1 32GB
新規格「アプリケーションパフォーマンスクラス:A1」のmicroSDカード、公称最大読取り速度は80MB/s
売り上げランキング: 2,964
② SAMSUNG EVO Plus microSDHC UHS-1 32GB
amazonで、カテゴリ「パソコン・周辺機器」のベストセラー1位を爆進中!公称読み出し速度は95MB/s
売り上げランキング: 1
2009年発売の古いUSBメモリー、公称最大転送速度は30MB/s
USB3.1(Gen 1)接続のフラッシュドライブ(USBメモリー)、公称読取り速度は130MB/s
売り上げランキング: 138
⑤ CFD CSSD-PNM64WJ2 + NOVAC NV-HD160U
IDE接続の古~いSSDをこれまた2003年発売のUSB2.0接続のハードディスクケースに収めたもので、公称Seq-Writeは85MB/s
ベンチマークの実行条件
対象とするストレージをRaspberry Pi 3 Model B+の起動ディスクとして用いた場合の実際のアプリ実行速度を比較することが目的なので、ストレージ以外は全て同一条件とした。
1.同一のRaspberry Pi 3 Model B+に起動ディスクとして対象ストレージを差し替えて行う。
2.【STEP-03】でダウンロードした最新のRaspbian(2018-04-18)のZIPファイル(2021/2/2時点ではダウンロードできません)を直接、【STEP-02】でフォーマットした①に【STEP-04】のEtcher(ver.1.44)を使って書き込んだ。
3.その後①に対し、
【STEP-06】ローカライゼーションの設定
【STEP-08】Raspbianの更新
【STEP-09】システムの設定
【STEP-10】fcitex-mozcのインストール
【STEP-11】日本語フォント”No Tofu”のインストール
【STEP-12】Googleアカウントにログイン
【STEP-14】システムフォントの変更
【STEP-15】スタートメニューのカスタマイズ
【STEP-16】、【STEP-17】、【STEP-18】、【STEP-19】タスクバーのカスタマイズ
【STEP-20】デスクトップのカスタマイズ
【STEP-21】デスクトップにショートカット追加
【続報 ② 】cpufrequtilsのインストール
【STEP-46】Spectacleのインストール
【続報 ③ (本記事)】sysbenchのインストール
を実行した。
4.ここまで設定済の①をマスターディスクとして、【STEP-24】のSD Card Copierを用い他の対象ストレージにコピーした。SD Card Copierはドライブを丸ごと上書きするので、コピー前のパーティション操作やフォーマットは不要。
5.Raspberry Pi 3 Model B+には5V3Aの電源とディスプレイ、キーボード、マウスを接続し、LANケーブルも一旦、接続しておく。
6.対象ストレージ毎に、初回起動後、ブラウザを起動してGoogleアカウントへのログインを確認した後、一旦、シャットダウンする。
7.LANケーブルを外してから再度、起動する。無線LAN(Wi-Fi)には接続しない。
8.ベンチマーク実行前にcpufrequtilsをrestartしてCPUクロックを1.4GHzに固定する。
尚、ベンチマークは、spectacleを閉じてから実行した。
ベンチマークツール:sysbenchのインストール
メニューアイコンから「設定」→「Add / Remove Software」をクリックし、起動します。画面左上の検索枠に”sysbench”と入力して「Enter」キーを押すと、しばらくして右ペインに検索結果が表示されるので、”sysbenchs”のチェックボックスにチェックを入れ、画面右下の「Apply」ボタンをクリックします。
「認証待ち」画面に続いて「認証」画面が現れるので、【STEP-09】で設定したパスワードを入力し、「OK」ボタンをクリックします。
ダウンロードに引き続き、インストールも終わったら、右ペインの”sysbench”のチェックボックスにチェックが入っていることを確認して「OK」ボタンをクリックし、閉じます。
①SanDisk Ultra microSDHC UHS-1 A1 32GBのベンチマーク実行
コマンド”parted“でRaspberry Pi 3 Model B+に接続したデバイス名とそのモデル名を確認します。
sudo parted -l
①SanDisk Ultra microSDHC UHS-1 A1 32GBのモデル名は”SD SC32G”で、デバイス名”mmcblk0″からはカードスロットに接続したデバイスであることが分かります。
タスクバーのCPUFreqのアイコンにマウスを合わせると、CPUクロックが600MHzと表示されます。
ベンチマーク実行中のCPUクロックを最大周波数の1.4GHzに固定する為、【続報 ② 】で設定したcpufrequtilsをrestartさせます。
sudo /etc/init.d/cpufrequtils restart
タスクバーのCPUFreqのアイコンにマウスを合わせると、CPUクロックが1.4GHzと表示されると共に、Governor(速度管理)も”permormance”に変わっています。
次のコマンドで、ベンチマークを実行する為の試験用ファイルを作成します。
sysbench --test=fileio prepare
既定では、16MBのファイルを128個、合計2GBの試験用ファイルが実行ディレクトリに作成されます。
次のコマンドで、ベンチマークを実行します。
sysbench --test=fileio --file-test-mode=rndrw run
ベンチマークツールのsysbenchには、たくさんのオプションがありますが、その中から今回の目的「(起動ディスクの違いによる)実際のアプリ実行速度」に最も近い条件のファイルI/Oのrndrw(ランダム読み書き)を選択しました。
画面を見ると、ファイルを93.75MB読み込み、62.5MB書き込んだ所要時間が16.4秒で、ファイルの平均転送速度は9.5MB/sとなっています。
次のコマンドで、試験用ファイルを削除します。
sysbench --test=fileio cleanup
全ての試験用ファイルが削除されたことを確認してから、シャットダウンします。
②SAMSUNG EVO Plus microSDHC UHS-1 32GBのベンチマーク実行
microSDカードを差替えて起動し、コマンド”parted“でRaspberry Pi 3 Model B+に接続したデバイス名とそのモデル名を確認します。
sudo parted -l
②SAMSUNG EVO Plus microSDHC UHS-1 32GBのモデル名は”SD EB1QT”で、デバイス名”mmcblk0″からはカードスロットに接続したデバイスであることが分かります。
続けて、cpufrequtilsをrestartさせ、CPUクロックを最大周波数の1.4GHzに固定ます。
sudo /etc/init.d/cpufrequtils restart
タスクバーのCPUFreqのアイコンにマウスを合わせて、CPUクロックが1.4GHzになっていることを確認します。
①のときと同じように、実行する為の試験用ファイルを作成してから、ベンチマークを実行します。
今度は、同一のオペレーションで所要時間が720.7秒も掛かり、ファイルの平均転送速度は222KB/sしかありません。
①のときと同じように、作成した試験用ファイルを削除してから、シャットダウンします。
③BUFFALO RUF2LV32GS-BKのベンチマーク実行
カードスロットからmicroSDカードを引き抜き、USBポートに③を接続した状態でRaspberry Pi 3 Model B+を起動し、コマンド”parted“で接続したデバイス名とそのモデル名を確認します。
sudo parted -l
③BUFFALO RUF2LV32GS-BKのモデル名は”BUFFALO USB Flash Disk”で、デバイス名”sda”からはUSBポートに接続したデバイスであることが分かります。
続けて、cpufrequtilsをrestartさせ、CPUクロックを最大周波数の1.4GHzに固定ます。
sudo /etc/init.d/cpufrequtils restart
タスクバーのCPUFreqのアイコンにマウスを合わせて、CPUクロックが1.4GHzになっていることを確認します。
①のときと同じように、実行する為の試験用ファイルを作成してから、ベンチマークを実行します。
同一オペレーションの所要時間が440.6秒、ファイルの平均転送速度は359KB/sで、②よりは、いくらかましといった程度です。
①のときと同じように、作成した試験用ファイルを削除してから、シャットダウンします。
④SanDisk SDCZ430-032Gのベンチマーク実行
USBポートに接続した③を④に差替えて起動し、コマンド”parted“で接続したデバイス名とそのモデル名を確認します。
sudo parted -l
④SanDisk SDCZ430-032Gのモデル名は”San Disk Ultra Fit”で、デバイス名”sda”からはUSBポートに接続したデバイスであることが分かります。
続けて、cpufrequtilsをrestartさせ、CPUクロックを最大周波数の1.4GHzに固定ます。
sudo /etc/init.d/cpufrequtils restart
タスクバーのCPUFreqのアイコンにマウスを合わせて、CPUクロックが1.4GHzになっていることを確認します。
①のときと同じように、実行する為の試験用ファイルを作成してから、ベンチマークを実行します。
同一オペレーションの所要時間が22.7秒、ファイルの平均転送速度は6.9MB/sでした。
①のときと同じように、作成した試験用ファイルを削除してから、シャットダウンします。
⑤CFD CSSD-PNM64WJ2のベンチマーク実行
USBポートに接続した④を⑤に差替えて起動し、コマンド”parted“で接続したデバイス名とそのモデル名を確認します。
sudo parted -l
⑤CFD CSSD-PNM64WJ2 (現在取り扱いなし)のモデル名は”CFD CSSD -PNM64WJ2″で、デバイス名”sda”からはUSBポートに接続したデバイスであることが分かります。
続けて、cpufrequtilsをrestartさせ、CPUクロックを最大周波数の1.4GHzに固定ます。
sudo /etc/init.d/cpufrequtils restart
タスクバーのCPUFreqのアイコンにマウスを合わせて、CPUクロックが1.4GHzになっていることを確認します。
①のときと同じように、実行する為の試験用ファイルを作成してから、ベンチマークを実行します。
同一オペレーションの所要時間が17.9秒、ファイルの平均転送速度は8.7MB/sで、①には僅かに及びませんでした。
①のときと同じように、作成した試験用ファイルを削除してから、シャットダウンします。
結果のまとめ
結果をまとめる前に、市場では最も支持を得ている②SAMSUNG EVO Plus microSDHC UHS-1 32GBNの結果があまりにも悪かったので、何か設定ミスがあったのではないかと思い、もう一度、ディスクのコピーからやり直して再度、ベンチマークを実行してみました。
その結果は、所要時間が913.5秒、ファイルの平均転送速度は175.1KB/sで、更に悪いものでした。ディスクエラーがあれば、sysbenchからもエラーが返ってくるはずで、通常の動作は問題ないことから個体差でハズレだったのでしょうか?
「公称最大転送速度」が、シーケンシャルアクセス(連続している領域への読み書き)なのに対し、今回のベンチマークで測定した「実測転送速度」は、実際のアプリ実行時に近いランダムアクセス(分散した領域への読み書き)なので、数値が違うのは当然としても、結果には大きな開きがあり、カタログデータ(公称最大転送速度)は全く当てにならないことが分かりました。
結果は、恐るべし「アプリケーションパフォーマンスクラス:A1」の①SanDisk Ultra microSDHC UHS-1 A1 32GBで、さすがにランダムアクセスに強いことを謳うだけのことがありました。②SAMSUNG EVO Plus microSDHC UHS-1 32GBが振るわなかったのは個体差の問題なのか今後、検証する必要があります。今回、最も期待した④SanDisk SDCZ430-032Gも①には及びませんでした。反対に腐っても鯛だったのは、⑤CSSD-PMM64WJ2でSSDとしては最低のスペックながら、①に迫る実測転送速度:8.7MB/sを叩き出しました。これがそこそこのスペックのSSDだったらと考えると、USB2.0の理論的最大転送速度60MB/s(480Mbps)も夢ではないかもしれません。
今後も、ベンチマークの対象ストレージを増やし、Raspberry Pi 3 Model B+の最適環境は何かを探っていきたいと思います。