はじめに
Debian公式サポートにあるようにDebianは公式でarmel,armhf,arm64のアーキテクチャをサポートしている。
https://www.debian.org/ports/#portlist-released
2019年夏にリリース予定のDebian BusterではDebian公式として、ラズパイ3をサポートするらしい。(どうもarm64版として)
http://gihyo.jp/admin/clip/01/linux_dt/201709/07
そのラズパイ3用arm64版BusterのPREVIEW版はすでに2版目がリリースされている。
https://wiki.debian.org/RaspberryPi3
WindowsとWin32 Disk Imagerを使ってもブート用SDカードが作れることを確認できた。
Busterまでは待てないので、Stretchのarm64やarmhfが欲しいという人は、rpi23-gen-imageを使えとDebian Wikiに書いてあるため、実際に作ってパフォーマンスをテストしてみた。
結果
最初に結論を書いてしまうと面白くないのだが、arm64版Debianと公式Raspbianを比べてみたが、Unixbenchの総合評価であるSystem Benchmarks Index Scoreではほとんど差が出なかった。
それだけRaspbianとCPUの最適化が完璧に近いと考察できるが、rpi23-gen-imageがもう少し頑張れるはずと考察もできる。
なお、先に紹介したraspberry-pi-3-buster-PREVIEWはパフォーマンスが出なく、完成にはもう少し時間がかかりそうな結果となった。
イメージ作成方法
結果は残念ではあるが、イメージの作成方法だけ記載しておく。
rpi23-gen-imageがアップデートすればRaspbianと十分差がつく可能性もあるため、それを期待しておく。
ラズパイ3用arm64版Stretch
WSLでは失敗します。VMなどをお使いください。
$ sudo apt update
$ sudo apt install -y debootstrap debian-archive-keyring qemu-user-static binfmt-support dosfstools rsync bmap-tools whois git bc psmisc dbus sudo git crossbuild-essential-arm64
$ git clone https://github.com/drtyhlpr/rpi23-gen-image.git
$ cd rpi23-gen-image
$ sudo su
# CONFIG_TEMPLATE=rpi3-stretch-arm64-4.11.y ./rpi23-gen-image.sh
# exit
rpi23-gen-image/images/stretch/2018-**-**-arm64-rpi-4.11.y-rpi3-stretch-arm64.imgが作成される(2018-**-**は作成日の日付)
これをSDカードに書き込みます。
$ cd images/stretch/
$ umount /dev/mmcblk0p1
$ umount /dev/mmcblk0p2
$ sudo dd bs=4M if=2018-**-**-arm64-rpi-4.11.y-rpi3-stretch-arm64.img of=/dev/mmcblk0 conv=fsync
$ sync
ラズパイ3用armhf版Stretch
WSLでは失敗します。VMなどをお使いください。
$ sudo apt update
$ sudo apt install -y debootstrap debian-archive-keyring qemu-user-static binfmt-support dosfstools rsync bmap-tools whois git bc psmisc dbus sudo git crossbuild-essential-armhf
$ git clone https://github.com/drtyhlpr/rpi23-gen-image.git
$ cd rpi23-gen-image
$ sudo su
# CONFIG_TEMPLATE=rpi3stretch ./rpi23-gen-image.sh
# exit
rpi23-gen-image/images/stretch/2018-**-**-debian-rpi3stretch.imgが作成される(2018-**-**は作成日の日付)
これをSDカードに書き込みます。
$ cd images/stretch/
$ umount /dev/mmcblk0p1
$ umount /dev/mmcblk0p2
$ sudo dd bs=4M if=2018-**-**-debian-rpi3stretch.img of=/dev/mmcblk0 conv=fsync
$ sync
ベンチマーク下準備
設定値 | |
---|---|
User Name | pi |
Password | raspberry |
Host Name | pi3-stretch |
SSHまたはローカルでログインし、以下のコマンドを実行する。
$ sudo apt update
$ sudo apt install -y git build-essential cpufrequtils
$ grep "" /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
scaling_governor:ondemandと表示されれば、CPUは負荷に応じてフルパワーで駆動する設定になっています。
次にベンチマークソフトのUnixBenchをインストール、実行します。ベンチマーク中はヒートシンクをつけていてもヒートアラートが出ます。筆者はアイスノンで冷やしました。
$ git clone https://github.com/kdlucas/byte-unixbench.git
$ cd byte-unixbench/UnixBench/
$ make
$ ./Run -c 4
結果詳細
Image File | 2018-04-18-raspbian-stretch-lite.img | 2018-05-14-arm64-rpi-4.11.y-rpi3-stretch-arm64 | 2018-01-08-raspberry-pi-3-buster-PREVIEW.img |
---|---|---|---|
Link | Download Raspbian for Raspberry Pi | RaspberryPi3 - Debian Wiki | |
System: | raspberrypi: GNU/Linux | rpi3-stretch: GNU/Linux | rpi3: GNU/Linux |
OS: | GNU/Linux -- 4.14.34-v7+ -- #1110 SMP Mon Apr 16 15:18:51 BST 2018 | GNU/Linux -- 4.11.12-v8 -- #1 SMP PREEMPT Mon May 14 23:29:46 JST 2018 | GNU/Linux -- 4.16.0-1-arm64 -- #1 SMP Debian 4.16.5-1 (2018-04-29) |
Machine: | armv7l: unknown | aarch64: unknown | aarch64: unknown |
Language: | en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968") | en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968") | en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968") |
Benchmark Run: 4 CPUs; 4 parallel processes
Image File | 2018-04-18-raspbian-stretch-lite.img | 2018-05-14-arm64-rpi-4.11.y-rpi3-stretch-arm64 | 2018-01-08-raspberry-pi-3-buster-PREVIEW.img |
---|---|---|---|
Dhrystone 2 using register variables | 1485.5 | 2023.5 | 1102.3 |
Double-Precision Whetstone | 770.1 | 810.8 | 398.0 |
Execl Throughput | 506.8 | 603.9 | 365.9 |
File Copy 1024 bufsize 2000 maxblocks | 553.5 | 471.1 | 327.7 |
File Copy 256 bufsize 500 maxblocks | 372.8 | 309.8 | 211.1 |
File Copy 4096 bufsize 8000 maxblocks | 921.8 | 930.6 | 646.2 |
Pipe Throughput | 946.8 | 921.2 | 517.5 |
Pipe-based Context Switching | 605.0 | 436.2 | 270.4 |
Process Creation | 374.4 | 483.8 | 269.3 |
Shell Scripts (1 concurrent) | 1061.5 | 1277.4 | 738.5 |
Shell Scripts (8 concurrent) | 1024.8 | 1131.8 | 670.7 |
System Call Overhead | 1478.2 | 1067.2 | 713.1 |
System Benchmarks Index Score: | 761.5 | 765.3 | 462.4 |