なうびるどいんぐ

脳みそ常時-3dB

Raspberry Pi 4を買ってみた、必要な物とかベンチマークなど

      2020/09/12    HimaJyun

ギガビットイーサネット対応、メモリ増量などの大幅なスペックアップを果たしたRaspberry Pi 4、ついに日本でも使える物が市場に出回り始めたみたいです。

さっそく購入したので、いくつかのベンチマークと、必要になる機材(特にACアダプタ)とかの話。

スポンサーリンク

Raspberry Pi 4

Raspberry Piシリーズ、2B→3B→3B+と順当に進化はしていましたが、今回発売された4Bで大幅な進化をしました。色々と気になっていた部分が改善しています。

細かい所も色々と変わっていますが、特に気になったメモリ、ギガビットイーサネット、USB 3.0の3つをおさらい。

メモリ

いままでのRaspberry Piはメモリが1GBしか選べなかった。

故に、Raspberry PiでKubernetesみたいなメモリを食うアプリケーションを動かそうとすると圧倒的メモリ不足で苦労していました。

Pi 4Bからはメモリの選択肢が追加、いままでの1GBに加えて2GB、4GB、8GBが選べるようになりました。

おうちKubernetesが捗りますね!

ネットワーク

今までのRaspberry PiはLANが100Mbpsまで、3B+で形だけギガビットイーサネットに対応しましたが、接続がUSB 2.0経由だったので実測は300Mbpsまででした。

これが4Bでついに真のギガビットイーサネットに対応しました。

これにより、Samba(NAS)のような用途でも使えるようになりました。

更に、LANコントローラーがUSBコントローラーと独立したので、USBとLANを同時に使用しても帯域を取り合ったりしなくなりました。(今まではUSB経由で繋がっていた)

USB 3.0

ギガビットイーサネットだけじゃありません。USBも3.0に対応しました。

ネットワークが速くなるだけだとディスクが詰まるのである意味必然的な進化かも知れませんが、ギガビットイーサネットと合わせて使い勝手の向上になります。

ここにUSB-5Gbeアダプタとか繋ぐとどうなるんでしょうね?LANとは独立しているのでUSBの帯域を使って更にネットワークを速くすることもできる気がします。

必要な機材

電源がType-C化した事を除くと、他は以前までとそこまで変わりません。

必要な周辺機器を新品で買っているとかなり割高になるのも今までと変わらずなので、手持ちの機材で対応できる場合は極力手持ちの機材で間に合わせましょう。

本体

Raspberry Pi 4 外箱

なにはともあれ、まずは本体を入手する必要があります。

今回入手したのはOKdo製の4GB版。「OKdoってどこだよ」と思うかもしれませんが、これはRS Components系列らしいです。

メモリ2GB/1GB版もあるにはあるのですが、4Gとそこまでお値段変わらないので4GBを選ぶ人の方が多いでしょう。

8GBは少し高くなります、8GBだとOSに64bit版を使用する必要があるので要注意。

SDカード

Raspberry Piの動作にはMicroSDカードが必要ですが、これはぶっちゃけ「なんでも良い」です。容量は8GB以上あった方が良いですが、いまどきそんな小容量のSDカードを手に入れる方が難しいでしょう。

「Raspberry PiはSDカードの相性がキツい」みたいな話がありますが、個人的な経験だと全然そんな事ないです。認識しない事の方が稀です。

中には相性で使えないものもあるらしいのですが……10種類くらいSDカード挿してみて使えなかった事がないのでそこまでピリピリしなくて良いと思います。

その辺に落ちてたSDカードとか拾って挿したけど普通に使えましたし。

今回は手元で自由に使えるのが高耐久タイプ(MLC)だけだったのでそれを使っています。

こういう普通の物で全然大丈夫です。レビュー見て「Raspberry Piで動いた」とか投稿があれば問題が起きることはないでしょう。

電源(ACアダプタ)

Pi4 ACアダプタ

Raspberry Piは給電にACアダプタが必要です。Pi4からは給電がUSB Type-CになったのでACアダプタは新調が必要になる人も多いかも?

Pi4では5V/3Aの給電に対応したACアダプタが必要になります。Type-C充電器の中ではワット数の小さい部類なので対応機器を探す事自体は難しくない。

ただ、Type-C周りの規格がカオスということもあって危ない製品が売られてるのでちゃんとしたものを買うのは難しい。

ACアダプタだけは少し気を付けて選んだ方が良いと思います。中には5V/2.4AのType-C充電器とかもあるので購入前にスペックをちゃんと見ましょう。

今回使用しているのは以下のアダプタ。値段の割にはそこそこマトモな部類です。

推奨は5V/3Aですが、USB周辺機器の合計消費電流が500mA(0.5A)未満の場合は5V/2.5Aでも大丈夫みたいです。

つまり、Pi3で使っていた充電器にType-A→Type-C変換ケーブルを使って給電したのでもOKという意味です。

新規で買うならちゃんと5V/3Aに対応したものを購入する事をお勧めしますが……

電源ケーブル

Pi4 ケーブル

Pi4から給電がType-Cになりました。Type-Cってケーブルにも細かい仕様があって意味わかんないよね。

Raspberry Pi 4で使う場合は電源供給専用、つまりデータ転送は必要ないのでUSB 2.0のケーブルを選びましょう。(Type-C=USB 3のイメージありますが、2.0のType-Cってのもあるんです)

この辺を解説すると記事が無限に長くなるので大雑把にしか解説しませんが、Type-Cのケーブルには基本的にeMarkerというものが搭載される必要があります。例外的に、USB 2.0/3AのケーブルだけはeMarkerが必要ありません。

eMarkerを搭載するとコストが上がるので、eMarkerの必要ないUSB2.0 3Aのケーブルの方が安いです。(安くてUSB 3.2対応のケーブルとかありますが、eMarker非搭載の規格不適合品が多いのでそれを買うくらいなら2.0で良いです)

今回使っているのは以下のケーブルです。どうせデータ転送はしないんだし、USB 2.0で良いと思います。

micro-HDMI変換ケーブル

Pi4 HDMI

ディスプレイ出力が欲しい人は必須です。

Pi4から2画面出力に対応しましたが、面積的な都合なのかディスプレイ出力が通常のHDMIからmicro-HDMIという端子に変更されています。

USB Micro-Bっぽく見えるけど違うので要注意。

なのでmicro-HDMI→HDMIの変換ケーブルが必要になります。こういう奴。

ケース

Raspberry Pi 4 ケース

Pi4からUSBとLAN端子の位置が逆になったので、以前までのケースは使えない場合があります。

特にUSB/LAN端子も含めてカバーするタイプのケースは確実に使えません。(その辺をニッパーでぶった切れば無理やり使う事は出来ると思うけど……)

ネジ穴の位置は変わっていないので、積み重ねるケースみたいなUSB/LAN端子をカバーしてない物はそのまま行けます。

Raspberry Pi用4階建てケース買ってみたら案外良かった

今回は冷却を兼ねてヒートシンクと一体になっているケースを購入しました。

室温20℃でCPU負荷を100%にして50℃以下をキープ出来ています。

ヒートシンク

3BではCPU剥き出しだったのが3B+から一応金属製のカバーが付きました。4Bでもそれは同じなのですが、やはりヒートシンクはあった方が良いと思います。

4BではCPUだけでなくDRAMやUSBコントローラーも冷やすのが主流みたいです。

手持ちにヒートシンクが余ってるならそれを流用でOKです。

ケースとヒートシンクを両方新調する場合はヒートシンク一体型のケースにした方が放熱面積増やせて良いと思います。

ベンチマークなど

ベンチマークとかをやってみましょう。

OSのインストールは全Pi共通なので省略。

【Buster対応】Raspbianのインストールと最強の初期設定

ファームウェア更新

Raspberry Pi 4からDRAM増量、USB 3.0対応、ギガビットイーサネット対応と大幅な革新が行われました。

その関係でブート周りの動作が複雑になっているらしく、以前までのSoCのROMに変更不能なコードを組み込むやり方だとバグなどのリスクが大きい。

という訳でPi 4からは書き換え可能なEEPROMが搭載されており、ここにブートローダー的な何かが入るようになっているらしいです。

(全部公式サイトの受け売りです)

まぁ要するにBIOS更新っぽいソレが出来るようになりましたよみたいな話です。

Pi3であった「HDDでUSBブートしようとするとタイムアウトが短すぎてスピンアップが間に合わない」みたいなのもEEPROMのコードを修正すれば対応できるようになるんだと思います。知らんけど……

ファームウェアの更新はrpi-eepromをaptでインストールしておけば自動でやってくれるっぽい。(Raspbian Busterだと最初からインストールされている模様)

sudo apt install rpi-eeprom

手動でアップデートを確認したい場合はsudo rpi-eeprom-updateを実行すれば良いです。

pi@raspberrypi:~ $ sudo rpi-eeprom-update 
BOOTLOADER: up-to-date
CURRENT: Tue Sep 10 10:41:50 UTC 2019 (1568112110)
 LATEST: Tue Sep 10 10:41:50 UTC 2019 (1568112110)
VL805: up-to-date
CURRENT: 000137ab
 LATEST: 000137ab

普段はあんまり気にしなくても良いとは思います。

UnixBench

UnixBenchを計ってみました。まずはシングルコア。

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   10200150.6    874.0
Double-Precision Whetstone                       55.0       2386.9    434.0
Execl Throughput                                 43.0        922.0    214.4
File Copy 1024 bufsize 2000 maxblocks          3960.0     112360.0    283.7
File Copy 256 bufsize 500 maxblocks            1655.0      31876.4    192.6
File Copy 4096 bufsize 8000 maxblocks          5800.0     316194.3    545.2
Pipe Throughput                               12440.0     163299.5    131.3
Pipe-based Context Switching                   4000.0      49191.5    123.0
Process Creation                                126.0       1898.9    150.7
Shell Scripts (1 concurrent)                     42.4       2661.1    627.6
Shell Scripts (8 concurrent)                      6.0        769.2   1281.9
System Call Overhead                          15000.0     488407.9    325.6
                                                                   ========
System Benchmarks Index Score                                         327.9

マルチコア

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   40771494.7   3493.7
Double-Precision Whetstone                       55.0       9530.7   1732.9
Execl Throughput                                 43.0       2752.8    640.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     221247.8    558.7
File Copy 256 bufsize 500 maxblocks            1655.0      60553.0    365.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     629605.9   1085.5
Pipe Throughput                               12440.0     615189.5    494.5
Pipe-based Context Switching                   4000.0     195696.1    489.2
Process Creation                                126.0       4717.6    374.4
Shell Scripts (1 concurrent)                     42.4       6137.1   1447.4
Shell Scripts (8 concurrent)                      6.0        839.6   1399.3
System Call Overhead                          15000.0    1850949.0   1234.0
                                                                   ========
System Benchmarks Index Score                                         872.5

インデックススコアで見るとPi4は327.9/872.5なのでPi3(312.4/797.3)やPi3B+(363.7/901.1)とほとんど変わりないです。

グラフだとこんな感じ。
Pi4 UnixBench

ただ、個別のスコアで見ると値が大幅に向上している項目があります。

例えばシングルコアのDhrystone、Pi3B+では433.3だったのがPi4では874.0とほぼ倍になっています。

WhetstoneはPi3B+で225.1だったのがPi4で434.0とこちらもほぼ倍。
Pi4 UnixBench 個別スコア

Pi3B+(Cortex-A53@1.4Ghz)からPi4(Cortex-A72@1.5Ghz)に変わったことによる性能向上はあるようです。

暗号化

暗号化のパフォーマンスを見てみましょう。ちなみにOpenSSL 1.1.1dです。

実際の結果は長くなるのでGitHubに貼ってます。ここではよく使われるAESとSHA256の性能を見てみます。

という訳でグラフ。
Pi4 暗号化

暗号化に関してはPi 3B比で1.7~2倍くらいのパフォーマンスがあるようです。

VPNみたいな暗号化の必要なソフトウェアだとネットワークだけが良くなっても暗号化処理が足を引っ張るので、暗号化のパフォーマンスが改善するのは良い事です。

ネットワーク

iperf3でネットワークを計測してみました。

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   106 MBytes   887 Mbits/sec
[  5]   1.00-2.00   sec   108 MBytes   906 Mbits/sec
[  5]   2.00-3.00   sec   111 MBytes   930 Mbits/sec
[  5]   3.00-4.00   sec   107 MBytes   899 Mbits/sec
[  5]   4.00-5.00   sec   112 MBytes   941 Mbits/sec
[  5]   5.00-6.00   sec   111 MBytes   934 Mbits/sec
[  5]   6.00-7.00   sec   109 MBytes   917 Mbits/sec
[  5]   7.00-8.00   sec   109 MBytes   917 Mbits/sec
[  5]   8.00-9.00   sec   107 MBytes   897 Mbits/sec
[  5]   9.00-10.00  sec   112 MBytes   941 Mbits/sec
[  5]  10.00-10.03  sec  3.06 MBytes   877 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.03  sec  1.07 GBytes   917 Mbits/sec

900Mbpsくらい出ていますね。ちゃんとギガビットイーサネットになっています。

SMB(Samba)、要するにNASとして使うと普通は暗号化しないので、LANの高速化はそのままパフォーマンスの向上に直結します。

ファイル転送

ネットワークがギガビットになって暗号化のパフォーマンスも上がったのは良いんですが、実際に暗号化込みだとどれくらい出るの?みたいな。

暗号化込みのパフォーマンスを確かめるためにSCPでファイルを転送してみました。

Pi4のramdiskに保存した1Gのデータをダウンロードする作業を3回ほど試して平均を取りました。(余談ですが、1GのramdiskってのもPi4だからできる事ですよね)

SSHのcipherはデフォルト(chacha20-poly1305)とAES系4種類でテスト。
Pi4 ファイル転送

もちろん暗号化込みの処理速度はソフトウェアによって変わりますが、40MB/s(320Mbp/s)は暗号化が必要な状況(外部への通信)で使うには十分な性能だと思います。というかChaCha20、噂通り速いな……

USBの転送速度

SSDをUSB 3.0に接続して、中に保存されているデータ(1GiBの空ファイル)を読み込む事でテスト。

pi@raspberrypi:~ $ dd if=/mnt/zero of=/dev/null bs=4M count=256 iflag=direct
256+0 records in
256+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.06077 s, 351 MB/s

USB 3.0が5Gpbs(8b/10bがあるので実際には4Gbps=500MB/s)なので、理論値の7割ほどと考えると十分な範囲だと思う。

眺めてみよう

本体を色々眺めてみましょう。

本体

本体です。搭載されているチップ類が増えていることが確認できます。
Pi4 本体

裏面です。3B+までは裏面に実装されていたDRAMが表面に移動したので裏面はMicroSDカードスロットがあるだけです。
Pi4 裏面

電源供給がType-Cになり、HDMIがMicro HDMIx2になりました。
Pi4 端子

待望のギガビットイーサネット&USB 3.0対応です。GPIOは今までと変わらず40ピン
Pi4 LAN端子

技適マーク

箱に技適マークがあります。
Pi4 箱 裏

さっきと同じ写真ですが、本体裏面にも技適マークがあるのが分かると思います。
Pi4 裏面

これだけのために何ヶ月も待ったんだよね。でも結局無線は使わないっていう。

Wi-Fi & Bluetoothナシのモデルとか有れば技適要らなくなるのに。

チップ類

CPUはBroadcom BCM2711です。4コアCortex-A72@1.5Ghz
Pi4 CPU

メモリにはMicronのD9WHVが載っています。LPDDR4です。
Pi4 DRAM

USBコントローラーはVIAのVL805です、CPUとはPCI-Expressで繋がっています。海外の強者はこのチップを剥がしてPCI-Expressを配線してGeForceを繋ぐとかやってるらしいです。
Pi4 USBコントローラー

イーサネットコントローラーはBroadcomのBCM54213PEです。以前まではUSBと帯域を共有していましたが、Pi4はUSBコントローラーとは独立しているので同時に使用しても帯域が足りなくなったりはしません。
Pi4 イーサネットコントローラー

帯域増加でより使いやすく

USBやイーサネットなど、帯域周りが強化された事でより様々な使い方が出来るようになりました。

USB 3.0対応とギガビットイーサネット対応はNASとして使うにはもってこいです。実際、今回購入したPi4はNASにするつもり。

もちろんメモリの増加で動かせるソフトウェアの幅も増えた。Raspberry PiでKubernetesを動かす人とか増えそうだよね。

 - コンピューター ,