🚀

Raspberry Pi 5はSSDで早くなるのか?(PCIe Gen2 vs Gen3も比較)

に公開

はじめに

Raspberry Pi 5からPCIe 2.0 ×1レーンが搭載され、M.2 HATをつけることでSSDが取り付けられることで有名です(発売から2年立ってるので今更すぎるの話ですが。。

過去にいくつかSSD搭載する記事を見たものの、あまりちゃんと比較したものを見た覚えがない+どうせなら自分でもやってみよう、ということでやってみました。

今回使用する機器

性能比較に使用した機器はこちらです。

パーツ 製品名 備考
本体 Raspberry Pi 5 8GBモデル
電源 Raspberry Pi 27W USB-C電源 公式電源
microSDカード① SanDisk Ultra 32GB 家にあったSDカード(性能:低)
microSDカード② SanDisk Extreme 128GB 家にあったSDカード(性能:高)
NVMe M.2 SSD SP P34A60 NVMe SSD 256GB 安かったから購入
SSD HAT X1001 ラズパイケース付属のM.2 Hat使用(下記リンク)

↓ 比較される記録メディア達

↓ 購入したケース&M.2Hatです

職場にしかラズパイ5がなかったので、プライベート用に買いました。
そのため、microSDカード以外は新品です。

https://x.com/nmkzenn/status/1974380363108790402

組むのに30分~1時間かかったけど、すごい気に行ってる
近くで見たらかっこいい。メインのデスクPCと並べるとミニチュアみたいでかわいい。

microSDカードの性能規格の違い

家にあったmicroSDカードですが、表面を見ると色々マークが書かれてます。
これらは読み書き速度の保証を示すクラスを示してて、どのマークの規格でも数字が大きければとりあえず性能が高いです(「microSD 規格」とかで調べてもらえればヒットします)

今回のSDカードで違う部分は以下4点

  • A1、A2
  • アルファベットの「U」みたいな文字の中の数字
  • Ultra 32GBだけ10のマークがある
  • Extreme ProだけV30のマークがある

軽く調べた内容を下記にまとめてみます。

アプリケーションパフォーマンスクラス(A1, A2)

A1とA2のことです。スマホアプリやOSの快適さを示すランダムアクセスの最低保証値を示しています。

  • A1: ランダム読込回数 1500 IOPS / ランダム書込回数 500 IOPS
  • A2: ランダム読込回数 4000 IOPS / ランダム書込回数 2000 IOPS

スピードクラス (Class 2, 4, 6, 10)

最低保証書込速度を示しています。

  • Class 2: 最低 2MB/s を保証
  • Class 4: 最低 4MB/s を保証
  • Class 6: 最低 6MB/s を保証
  • Class 10: 最低 10MB/s を保証 (U1、V10と同等)

UHSスピードクラスの違い(U1, U3)

アルファベットの「U」みたいな文字の中の数字の違いのことです。最低保証書込速度を示しています。

  • UHSスピードクラス1(U1) ⇒ 最低 10MB/s を保証 (Class10、V10と同等)
  • UHSスピードクラス3(U3) ⇒ 最低 30MB/s を保証

ビデオスピードクラス (V10, V30, V60, V90)

最低保証書込速度を示しています。

  • ビデオスピードクラス10 (V10) ⇒ 最低 10MB/s を保証 (Class10、U1と同等)
  • ビデオスピードクラス30 (V30) ⇒ 最低 30MB/s を保証 (U3と同等)
  • ビデオスピードクラス60 (V60) ⇒ 最低 60MB/s を保証
  • ビデオスピードクラス90 (V90) ⇒ 最低 90MB/s を保証

正直今まであまり気にしてなかったですが、ほとんど同じような規格ですね。
microSDの歴史は分かりませんが、もう少しわかりやすくするか、統一するかしてほしい。。

計測方法

ラズパイには公式でディスク読書速度の計測ツール「Raspberry Pi Diagnostics」があります。
Raspberry Pi OSにデフォルトでインストールされているので、今回はこちらを使って比較していきたいと思います。

  1. Raspberry Pi OS(Trixie)をクリーンインストールし、ユーザー名や各種設定を行います。

  2. apt update && apt upgradeを実行(一応)

  3. 「スタート」->「アクセサリー」->「Raspberry Pi Diagnostics」をクリック

  4. 「SD Card Speed Test」が選択されてる状態で「Run Tests」

  5. 測定中…

  6. 終わるとRESULTにPASS or FAILが表示されます(私はPASSしか表示されませんでした)

PASSかFAILかの違いは測定結果が基準値を満たすかどうかみたいです。

  1. 「Show Log」ボタンが発生するので、クリックすると詳細がテキストファイルで出力されます

連続読込/書込、ランダム読込/書込の計4項目が測定されてます。
診断結果も書いてありますね。

  1. もう一度測定する場合は、「Reset」ボタンを押すと再度「Run Tests」が押せるようになります

比較結果

3種のストレージに対して、上記測定方法をそれぞれ5回ずつ行った結果を比較していきたいと思います。

ちなみにそれぞれのメーカー公称値についても一応触れておきます。

項目 SD ULT SD EXT SSD
最大読込速度 120 MB/s 200 MB/s 2,200 MB/s
最大書込速度 10 MB/s以上¹ 90 MB/s 1,600 MB/s

¹ SanDisk Ultraは具体的な最大書込速度は明記がなかった(Class 10/U1規格のみ)

単純計算だとSSDの読込速度は10~20倍書込速度は17~160倍microSDより出る計算になるが、果たして、、?

SSDの圧勝👊

全てにおいて圧倒的な差を見せつけ、SSDが見事1位になりました~(知ってた)

比較表

↓見づらいのでSSDを除いたmicroSDカードだけの比較

連続書込速度だけ大きな差があるが、それ以外はあまりない

計5回分の平均値

項目 SD ULT SD EXT SSD SSD性能向上
Sequential Write 19,893 KB/sec 67,167 KB/sec 429,214 KB/sec 約6.4~21.6倍
Sequential Read 92,142 KB/sec 89,286 KB/sec 438,367 KB/sec 約4.8~4.9倍
Random Write 2,611 IOPS 2,277 IOPS 107,365 IOPS 約41.1~47.1倍
Random Read 2,533 IOPS 2,199 IOPS 107,084 IOPS 約42.3~48.7倍

っていう結果でした。公称値からの比較通りと言っても悪くないくらい差はありますね。
ただ、連続読込速度(3種全て)、連続書込速度(SSD)については公称値よりも実測値が低い結果になりました。

メーカー公称値よりも実測値が小さくなった理由

調べてみたところ、RaspberryPi5本体のハードウェア的な制約による上限だということが分かりました。

microSD
Raspberry Pi 5側のインターフェース(UHS-I規格)が最大104MB/sの転送速度であるSDR104というモードをサポートしているからみたいです。
つまり、実測値として約90MB/s出ていた今回の結果はむしろ理論値に近く、microSDカード自体の性能は問題ないと言えます。

SSD
Raspberry Pi 5のPCIeがGen2で最大500MB/sの転送速度しか出ないからです。
SSDに関しても、実測値は約430MB/s出ていたので理論値に近い結果だったと言えます。

Gen2というのは知ってましたが、速度は気にしたことなかったので完全に抜けてました🤷‍♂️

【追加検証】ところでよ、お前まだ進化できたよな?

色々調べてる間にPCIe Gen3にオーバークロックする形で動かせることを思い出したので、Gen2とGen3でも比較してみたいと思います。

ちなみにGen2は約500MB/s、Gen3は約985MB/sと約2倍の差があります。Raspberry Pi 5の公式も非推奨的な扱いな機能ですが、どこまで性能差が出るでしょうか。

PCIe Gen3の有効化

  1. /boot/firmware/config.txtの一番下に下記の一行を追加します([all]の中でいいです)

    dtparam=pciex1_gen=3
    
  2. 再起動します

  3. 設定が反映されているか確認

    sudo lspci
    

    「Non-Volatile ...」みたいな表示があれば、SSDが認識されている。この行の左側の数字列をコピペ
    以下を実行して、Speed 8GT/sとなってればOK。5GT/sならGen2のまま。

    sudo lspci -vv -s {コピペした数字列} | grep -i "LnkSta"
    

Gen2とGen3の比較

比較表

計5回分の平均値

項目 SSD (PCIe Gen2) SSD (PCIe Gen3) Gen3性能向上
Sequential Write 429,214 KB/sec 836,495 KB/sec 約1.95倍
Sequential Read 438,367 KB/sec 870,910 KB/sec 約1.99倍
Random Write 107,366 IOPS 132,129 IOPS 約1.23倍
Random Read 107,084 IOPS 192,752 IOPS 約1.80倍

シーケンシャル性能は理論値通りの約2倍の値が出ました。
ランダム書込だけ伸びが悪いですが、読込に関しても約1.8倍と理論値に近い値になりました。

純粋に読み書き性能が倍になるので、ラズパイをサブPCやNASなどの用途で使う場合はGen3にしてみてもいいかなと思いました。
ただ、発熱量が増える可能性もあるので要注意です。公式も非推奨にしてるので、あまりないかもしれませんがクリティカルなシステム下で使うのは控えるべきでしょう。

おわり

「SSD vs microSD」、「SSD(PCIe Gen2) vs SSD(PCie Gen3)」の比較をしてみました。

もっと詳細にベンチマークをしたいときは「fio」というツールを使うといいみたいです。
ただ、カスタマイズ性が高いが故に学習コストも大きそうで今回はやめときました🐣

みなさんの環境とは使用するmicroSDやSSDとは環境が変わるかもしれませんが、本記事が何かしらの参考になれたら幸いです🤝

Discussion