@hiroget9 さん
私が使用しているPi4は、「made in UK」です。
Pi4版の開発・試聴にはこれを使っていくつもりです。
本日、ようやく64bit版Xenomaiカーネルでの起動に成功しました 
現状ではUSBに外付けSSDを接続するとハングアップするという問題があり、未解決です。
しばらくは試行錯誤を続けてみますが、解決しないとしてもPi4版の仕様と割り切って開発を進めようかと思います。
Pi4版 開発状況 (11/9時点)
- libc/コンパイラの選定が完了
- ビルド時に使用する最適化オプションを決定
- LFSベースでルートファイルシステムの構築が完了
- Xenomaiカーネルでの起動に成功
Pi4版は、LFS(Linux From Scratch)をベースに開発を進めています。
音質にかかわるソフトウェアはすべてソースからビルドしたいので、バイナリパッケージ主体のArch Linuxはアンマッチでした。
ソースからのビルドを主体とするGentoo Linuxは大変優れたパッケージ管理ソフトを備えており、Pi4版のベースとして有望でしたが、smpdでは独自にパッチをあてているソフトが多く、パッチやビルドスクリプトの管理が必要となります。
Gentoo未経験の私にはハードルが高く、ビルドプロセスを把握しきれないと判断しました。
ベンチマーク
BYTE UNIX Benchmarks (Version 5.1.3)でのベンチマーク結果を掲載します。
計測は1コアで行っています。
4コア並列で実行すれば、スコアは約4倍になります。
- Raspberry Pi 4B
- arm_freq=1000
- force_turbo=1でCPU周波数を固定
- カーネル ... Linux smpd 4.19.81-v8-smpd #7 SMP PREEMPT aarch64 GNU/Linux
- Xenomai ... 3.1.0-rc3
System Benchmarks Partial Index |
BASELINE |
RESULT |
INDEX |
Dhrystone 2 using register variables |
116700.0 |
29487284.0 |
2526.8 |
Double-Precision Whetstone |
55.0 |
1611.7 |
293.0 |
Execl Throughput |
43.0 |
828.2 |
192.6 |
Pipe Throughput |
12440.0 |
136666.7 |
109.9 |
Pipe-based Context Switching |
4000.0 |
20823.2 |
52.1 |
Process Creation |
126.0 |
1420.3 |
112.7 |
Shell Scripts (1 concurrent) |
42.4 |
733.3 |
172.9 |
System Call Overhead |
15000.0 |
126073.2 |
84.0 |
Pi2/Pi3/Pi4のスコア比較を掲載します。(全て1コアの計測結果です)
- Pi2 ... arm_freq=864、Linux 4.14.52 (32bit)、Xenomai 3.0.7、gcc 8.2.1、v0.9系の最適化オプション
- Pi3 ... arm_freq=1152、Linux 4.14.52 (32bit)、Xenomai 3.0.7、gcc 8.2.1、v0.9系の最適化オプション
- Pi4 ... arm_freq=1000、Linux 4.19.81 (64bit)、Xenomai 3.1.0-rc3、gcc 9.2.0、64bit版向け最適化オプション
System Benchmarks Partial Index |
Pi2 |
Pi3 |
Pi4 |
Dhrystone 2 using register variables (整数演算性能) |
839.4 |
1146.5 |
2526.8 |
Double-Precision Whetstone (浮動小数点演算性能) |
78.1 |
134.2 |
293.0 |
Execl Throughput (プロセス生成性能) |
128.3 |
238.0 |
192.6 |
Pipe Throughput (パイプのスループット) |
179.3 |
295.0 |
109.9 |
Pipe-based Context Switching (パイプのコンテキストスイッチ性能) |
99.4 |
188.3 |
52.1 |
Process Creation (子プロセス生成性能) |
107.4 |
201.1 |
112.7 |
Shell Scripts (シェルスクリプト実行性能) |
171.4 |
382.2 |
172.9 |
System Call Overhead (システムコール性能) |
345.3 |
555.6 |
84.0 |
Pi4はあえてCPU周波数を低く抑えていますが、それでもPi3の2~3倍の性能を持っていることが分かります。
これは、メモリがLPDDR2からLPDDR4になり帯域が向上したことやCPUキャッシュの増強など、メモリ性能の向上によるものだと思います。
そして、メモリアクセス処理の高速化はレイテンシの向上(ひいては音質向上)に相関しますので、Pi4版の音質には大いに期待できるものと思います。
一方で、プロセス生成、パイプ、システムコール呼び出しなど、カーネルの機能については、smpd v0.9系の性能には遠く及びません。
現時点ではPi4版のカーネルはXenomaiパッチを適用しただけのノーマル仕様ですが、v0.6系で行ったようなカーネルソースの最適化を進めていけば、改善がみられるだろうと思います。
smpdのカーネルは、音楽再生時に取得したプロファイルデータを元にカーネルのソースをすべて点検し、ホットスポットとなっている1000ファイル以上のソースに手作業でパッチをあて高速化を図っています。