「ラズパイ5」でストレージも高速化、NVMe SSDでは設定に注意
CPUもI/Oも高速化した最新機種、「ラズパイ5」登場特集をフォロー第3回
2024.03.21
日本でもついに「ラズパイ5」が発売された。新機能を紹介すると共に、ベンチマークテストで性能を検証する。
ラズパイ5の注目の新機能が、PCIe x1コネクタの新設です。用途に特に縛りはありませんが、最も需要があるのがPCIe/NVMe対応のM.2 SSDの利用でしょう。
すでに触れた通り財団でもM.2 SSDを利用するHAT製品を企画していますが、本稿を執筆している時点ではまだ発売されていません。しかしサードパーティーも同様の製品を多数企画していて、2023年12月にはポーランドのPineberry Pi社*4が拡張基板を発売しいます。ここでは、この製品を使ってPCIe/NVMe SSD使用時のストレージ性能を調べてみることにします。
*4 https://pineberrypi.com/
PCIe Gen.3も条件付きで可能
ラズパイ5のPCIe x1拡張コネクタは公称PCIe Gen.2対応です。これはPCIe x1拡張コネクタがPCIe Gen.2の認証試験*5しか行っていないためで、SoC自体はPCIe Gen.3までに対応します。
*5 PCIeでは、規格に定められた性能を持つ機器を使って信号が正しく伝送できるかをテストし、パスした機器だけがPCIe対応をうたえます。PCIe x1拡張コネクタはPCIe Gen.2のテストしか行っていないということです。
従って、PCIe Gen.3での利用は保証されていませんが、設定次第でPCIe Gen.3の帯域を得られます。
PCIe Gen.2は物理層の帯域が1レーン当たり5Gbps(片方向2.5Gbps)、論理層の帯域は1GB/s(片方向500MB/s)で、USB 3.0とほぼ同等です。従って、PCIe Gen.2でNVMe SSDを利用してもUSB接続SSD以上の性能は期待できません。
しかし、PCIe Gen.3に設定すれば論理層で2GB/s(片方向1GB/s)の帯域が得られます。なのでNVMe SSDを使うならトラブルが起きる可能性が皆無ではないにせよPCIe Gen.3で使いたいところでしょう。
Pineberry Pi社のM.2拡張基板
Pineberry Pi社は、M.2 2230/2242*6に対応し、ラズパイ5の上部に取り付ける「HatDrive! Top」(図9)と、M.2 2242/2280に対応する代わりにラズパイ5の基板裏に取り付る「HatDrive! Bottom」(図10)という2製品を発売しています。
*6 PCに詳しい人には言わずもがなですが、M.2 2280など後ろの4桁は上2桁がSSDの基板幅(22mm)を、下2桁が長さを表します。デスクトップPCやノートPCの多くは2280サイズのSSDを利用しています。2242や2230は一部の小型ノートやタブレットで使われている程度で、同容量の2280に比べると少し高価です。なお、M.2ソケット自体は俗にNGFFなどとも称されるSATAインタフェース接続にも対応しますが、ラズパイ5のM.2拡張基板はSATAインタフェースには(当然)対応しないので注意してください。ラズパイ5のPCIe x1に接続できるのはPCIe/NVMe対応のSSDだけです。
図9 Pineberry Pi社のHatDrive! Top
ラズパイ基板の上部に取り付ける。
[画像のクリックで拡大表示]
図10 Pineberry Pi社のHatDrive! Bottom
ラズパイ基板の裏側に取り付ける。
[画像のクリックで拡大表示]
HATとしてなじみがあるのは上部に取り付けるHatDrive! Topタイプですが、NVMe対応のSSDだとM.2 2280型が一般的で安価なことに加え、ラズパイ5は発熱が大きく上部にファンが必要になるので、ファンを遮らないHatDrive! Bottomの方がお薦めと思われます。
どちらの製品も付属のフラットケーブルを使用する限りPCIe Gen.3に対応できることをうたっています*7。M.2 2280に対応できるHatDrive! Bottomには、外部5V電源端子が設けられていて、この端子から電源を供給することにより、フラットケーブルで供給可能な5V/2Aを超える消費電力を持つような大容量/高性能SSDにも対応できます。2TB以内の標準的なPCIe Gen.3対応SSDはだいたい5W前後以下ですから、フラットケーブルで接続するだけで十分に使えます。
*7 Gen.3の認証を受けているわけではなく、Pineberry Pi社がテストした限り使えるということです。
なお、図10からは少し分かりにくいと思いますが、HatDrive! BottomはSSD取り付け面が底になる形でラズパイ5にビス止めします。よって、足がないと使えませんが足になるようなものは付属していません。また、HatDrive! Bottomを裏面に取り付けるとmicroSDスロットをフラットケーブルが遮り、microSDカードの取り付けが困難になる制限もあります。この辺りは自分で工夫する必要があります。
NVMe SSDから起動する
ラズパイ5はすでにNVMe SSDからの起動に対応しています。HatDrive! Bottomを使ってNVMe SSDの設定をした例を紹介します。基本的にM.2 SSDをPCIe x1拡張コネクタに接続する拡張基板ならば、どのメーカーでも同じ手順で設定できます。
拡張基板の説明に従ってPCIe x1スロットにNVMe SSDを取り付けます。microSDカードからRaspberry Pi OSを起動させ、端末を開きましょう。図11のようにコマンドを実行して、NVMe SSDが認識されていることを確かめます。図11のようにカーネルメッセージにnvmeを含む3行が表示されていれば、/dev/以下にデバイスノード/dev/nvme0と/dev/nvme0n1が作成されているはずです*8。
図11 NVMe SSDが認識されているか調べる
[画像のクリックで拡大表示]
*8 非互換のNVMe SSDが一部にあるようです。https://docs.pineberrypi.com/nvme-compatibility-listやラズパイの公式フォーラムに散発的に情報があります。ほとんどの製品は問題ないはずです。
NVMe SSDを確認したら、メニューのアクセサリから「SD Card Copier」を起動してください*9。Copy From Deviceに現在起動中のmicroSDを、Copy To DeviceにSSDを選択します。New Partition UUIDsにチェックを入れるとNVMe SSDから起動しないのでチェックは外します。その後「Start」ボタンを押します。
*9 新規システムをインストールするのなら、ラズパイ上でRaspberry Pi Imagerを使ってNVMe SSDにRaspberry Pi OSを書き込むこともできます。NVMe SSD-USB 3.1変換ケースを持っているのなら、それを利用したWindows上のRaspberry Pi ImagerでNVMe SSDにRaspberry Pi OSを書き込むことも可能です。
システムのコピーが完了したらSD Card Copierを閉じます。端末を開いて次のコマンドを実行し、NVMe SSDの第1パーティションを/mntにマウントします。このとき、/etc/fstabが古いという警告が出るかもしれませんが、これはNVMe SSDに同じパーティションUUIDがあるためなので気にする必要はありません。その後、/mnt/config.txtをエディタで開きます。
[画像のクリックで拡大表示]
/mnt/config.txtの末尾に次に示す3行を追加します。
[画像のクリックで拡大表示]
2行目は追加すると起動時にNVMe用のDevice Treeが読み込まれますが、なくても起動はできます。3行目はPCIe Gen.の設定で、右辺をにすると強制的にPCIe Gen.3で初期化されます。HatDrive! Bottomを使用した限りでは、PCIe Gen.3を強制しても何ら問題ありませんでした。
3行目を省略するか、右辺を2にすると標準のPCIe Gen.2で初期化され帯域が半分になります。
以上を追加したら、/mnt/config.txtを保存してnanoエディタを終了させてください。
続いて、ファームウエアの設定をして起動デバイス順を変更します。次のコマンドを実行してください。
[画像のクリックで拡大表示]
nanoエディタが起動します。BOOT_ORDERで始まる行があるはずです(ない場合は新規作成)。その右辺が起動デバイス順位です。
BOOT_ORDERの右辺1桁がデバイスを示し、ラズパイは下位の桁から順にデバイスをチェックして最初に見つかった起動パーティションから起動を行います。桁の数字とデバイスの対応は表4です。
表4 BOOT_ORDERのデバイスと数の対応
[画像のクリックで拡大表示]
例えばBOOT_ORDERを次のように設定すると最初にmicroSDを調べ、microSDがなければNVMe SSDをチェックして起動します。
[画像のクリックで拡大表示]
右辺を0xf16とすれば逆にNVMe SSD、microSDの順でチェックされます。どちらがよいかは使い方次第なので、都合がよい右辺に設定してください。なお、USBはチェックに時間がかかるので起動に使用しないなら4は入れないほうが良いでしょう。
以上を参考にBOOT_ORDERの右辺を変更したら保存し、エディタを終了させてください。ラズパイ5の電源を落とし、microSDカードを抜いて再起動すると、NVMe SSDから起動してきます。
ストレージ性能の比較
ラズパイ5で利用できるようになったNVMe SSDを含めて、ラズパイのストレージ性能がどこまで伸びているかをベンチマークで比較してみました。性能を比較したのは次の構成です。ラズパイもPCもすべてメモリーは8GBです。
- ラズパイ4+microSD
- ラズパイ4+USB ストレージ
- ラズパイ5+microSD
- ラズパイ5+USB ストレージ
- ラズパイ5+NVMe SSD(PCIe Gen.2、Gen.3)
- Intel N100搭載ミニPC+SATA 6Gbps SSD
ラズパイ5で利用したNVMe SSDは、米Intel社製の「Intel 660p」(容量1TBモデル、型番SSDPEKNW010T8、図10)です。やや古いPCIe Gen.3対応SSDですが、Intel社のSSD事業を受け継いだ米Solidigm(ソリダイム)社が同等の製品をSSDPEKNW010T8X1というモデル名で現在も販売しており、現役の製品です。
USBストレージにはNVMe SSD-USB 3.1変換ケースを使ってIntel 660pをUSB 3.0でラズパイに接続しました。変換ケースは台湾Realtek Semiconductor社製のPCIe Gen.3-USB 3.1ブリッジRTL9210B-CGを使用した製品です。市販のNVMe SSD-USB変換ケースはWがRTL9210B-CGを使用していて、USB 3.0接続なら5Gbpsに近いフル帯域が得られます。
microSDカードには米Western Digital製の「WD Purple」(容量32GB)を使用しました。UHS-I/SDR104に対応する高耐久型microSDです。
ラズパイ5と比較するために、低価格プロセッサIntel Processor N100(4コア最大3.4GHz、以下N100)を搭載するミニPC「SkyBarium MN22」(図12)も用意しました。メモリー8GB+SATA6Gbps接続256GB SSDという構成です。ケースやストレージ込みでセール時ならば実売2万円を切る製品ですから、ラズパイ5よりも安価なPCといってよいでしょう。
図12 約2万円と安価なPC「SkyBarium MN22」
[画像のクリックで拡大表示]
なお、SkyBarium MN22にはNVMe SSD搭載モデルもありますが、用意したSkyBarium MN22にはNVMeに対応するM.2スロットがない*10タイプです。そのためストレージとして韓国Samsung Electronics製の「SSD 840」(256GB)を増設し、SSD 840にUbuntu 22.04.3 LTSをインストールしてテストしました。ラズパイ5と同じSSDが使えないのは残念ですが、SATA SSD搭載のミニPCとの性能比較ができれば意味はあるでしょう。
*10 M.2スロットはありますがいわゆるNGFF(*6参照)のみで、PCIe/NVMe SSDは認識しません。
ストレージのテストはPhoronix Test Suite*11を使用してFlexible IO Tester*12を実行しました。汎用ストレージテストコマンドfioを使用したテストで、ディスクアクセスにLinux AIO(Linux非同期I/O)を使用し、ブロックサイズ1MB、バッファーなし、O_DIRECT(直接アクセス)というストレージの帯域に近い値が得られる設定で実行しています。
*11 https://www.phoronix-test-suite.com/
*12 https://openbenchmarking.org/test/pts/fio
なお、テスト実行時はラズパイ5には純正アクティブクーラーを、またラズパイ4にはヒートシンクケースを装備させてサーマルスロットリングを防いでいます。結果は図13です。
図13 ストレージ性能を比較
[画像のクリックで拡大表示]
性能の低い順に見ていきましょう。ラズパイ5ではmicroSDの性能が向上しているとされ、実際にラズパイ5のランダム/シーケンシャルリードはラズパイ4に対して2倍ほどの帯域が得られています。しかし、ランダム/シーケンシャルライトは誤差程度しか変わりません。UHS-I/SDR104に対応したといってもmicroSDカード自体の性能が足を引っ張ってしまうので性能向上の幅には限度があるといえます。
ラズパイ5+USBは平均リードライトがラズパイ4+USBよりも15%ほど高速になっていました。USB 3.0がRP1チップに集約され、RP1とSoCが広帯域のバスで接続されている恩恵でしょう。このテストではラズパイ4のUSB 3.0にストレージしか接続していませんが、別のデバイスと併用すればさらに差が付くはずです。
ラズパイ5+NVMe/PCIe Gen.2のストレージ帯域は、ラズパイ5+USBよりわずかに低い結果になりました。バス帯域を考えれば妥当なところです。NVMe SSDはUSBストレージの外付けよりも収まりがいい利点がありますが、PCIe Gen.2で使う限り性能面での恩恵はあまりないといえます。
ラズパイ5+NVMe/PCIe Gen.3はシーケンシャル/ランダムライトが約780MB/s、シーケンシャル/ランダムリードが約750MB/sでした。PCIe Gen.3の論理層の帯域からすると妥当と思われます。ちなみに、Intel 660pはPCIe Gen.3×4接続でシーケンシャルリード約2000MB/s、同ライト1800MB/sというスペックです。
PCでは標準的なPCIe Gen.3×4接続に比べれば大きく見劣りしますが、歴代ラズパイの中では最高速のストレージ環境であることは間違いありません。実際、比較対象にしたN100ミニPCのSATA 6Gbps接続と比べても十分に大きな帯域が得られています。Linuxマシンとしてラズパイ5を使うのであれば、NVMe SSDの利用に大きな価値があるとまとめていいでしょう。