RTOSとしての応答速度を比較してみた(Zephyrでのベンチマーク)

本サイトはアフィリエイト広告を利用しています。
Zephyr

Zephyr RTOSでは、デバイスの性能(処理速度や応答速度)を簡単に測定できます。

公式ベンチマークテスト(latency_measure)が用意されています。

ラズパイ4B(A72)、Pico2W(M33)、Pico(M0+)で比較したテスト内容・結果を紹介します。

 

スポンサーリンク

RTOSとしての応答速度を比較してみた(Zephyrでのベンチマーク)

Zephyr RTOSでは、デバイスの性能(処理速度や応答速度)を簡単に測定できます。

公式ベンチマークテスト(latency_measure)が用意されています。

下記のようなベンチマークが簡単に実施できました。

 

ラズパイ4B(A72)、Pico2W(M33)、Pico(M0+)で比較したテスト内容・結果を紹介します。

数値が小さいほど高性能(高速)です。単位はすべて ナノ秒 (ns) です。

大きいコアのA72がモチロン高速なのですが、Pico2W(M33)も頑張っていました。

項目 内容 RPi 4B(A72) Pico 2 W(M33) Pico(M0+)
Context Switch スレッド切り替え (k_yield) 464 1,145 2,165
ISR Resume 割り込みからの復帰 273 2,897 5,573
Mutex Lock 排他制御ロック (即時) 236 471 740
Semaphore Take 待機ありの取得 (Blocking) 615 1,794 3,205
Heap Malloc メモリ確保 376 4,199 8,830
Thread Create スレッド作成 3,876 1,481 2,870

 

(Geminiにも協力してもらった)まとめとしては下記となります。

  1. Pico 2 W (M33) はPico(M0+)と比べて「約2倍」速い

    • ほぼ全ての項目で、初代Picoの半分の時間で処理を完了しています。RTOSを載せ替えるだけでシステム全体の応答性が2倍になることを意味します。

  2. スレッド作成 (Thread Create) の逆転現象

    • 表の一番下にある通り、スレッド作成だけは RPi 4Bよりも Pico 2 W の方が高速 です (1,481ns vs 3,876ns)。

    • 理由: RPi 4B (Cortex-A72) は高機能な分、メモリ管理やキャッシュの一貫性制御などのオーバーヘッドが大きいため、単純なスレッド構造体の初期化においては、構造がシンプルなマイコン (Pico 2 W) が勝ることがあります。

 

詳細なテスト内容・結果を紹介していきます。

 

ベンチマーク

よく見かけるデバイスとしてのスペック比較のCoremarkベンチマークもあります。

ただ今回使用したZephyr(RTOS)のベンチマークは、下記のlatency_measureを使いました。

RTOSとしての比較・ベンチマークしてみたいと思ったためです。

zephyr/tests/benchmarks/latency_measure at main · zephyrproject-rtos/zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple...

 

RTOSとしての応答速度を比較(Latency Measure)

  • 割り込み遅延
  • コンテキストスイッチ
  • ミューテックスのロック解除など、

OSのオーバーヘッドを含めた速度を測定する場合、Zephyr標準の latency_measure を使います。

リアルタイム性を重視する場合に重要です。

 

ラズパイでZephyr(RTOS)を実装

実装・測定方法としては、公式のリポジストリをそのままビルドしただけです。

普通にZephyrのwest使ってビルドして、書き込んだだけです。

Pico2W(M33)、Pico(M0+)に関しては、そのままFlashまで出来ます。

 

普通のラズパイ4Bへの書き込み

ラズパイ4Bに関しては、最初のブートファイルを弄る必要があります。

config.txtを下記のように編集して、ビルドしたzephyr.binファイルも入れます。

 

筆者は手を抜いて下記感じで、ラズパイのOS(Raspbian)が入った環境を直接弄りました。

 

公式の手順を確認したい方は下記を参照ください。

Raspberry Pi 4 Model B (Cortex-A72) — Zephyr Project Documentation

 

USBシリアルで結果表示

デフォルトでベンチマーク結果をUART出力してくれますので、配線をします。

Pico2W(M33)、Pico(M0+)は下記形です。

  1. Pico Pin 1 (GP0 / TX) -> アダプタの RX

  2. Pico Pin 2 (GP1 / RX) -> アダプタの TX

  3. Pico GND -> アダプタの GND

 

ラズパイ4B(A72)は下記形です。

  • USB変換器の GND -> RPi4の GND (Pin 6)

  • USB変換器の RX -> RPi4の TX (Pin 8)

  • USB変換器の TX -> RPi4の RX (Pin 10)

 

 

ベンチマーク結果

あとは電源ONすれば勝手にRTOSがベンチマーク・結果表示してくれます。

各結果を貼り付けておきます。

ラズパイ4B(A72)

 

Pico2W(M33)

 

Pico(M0+)

 

ベンチマーク比較・まとめ

RTOSの性能を評価する上で最も重要な指標を抜粋・整理しました。

(Geminiにも協力してもらいました)単位はすべて ナノ秒 (ns) です。

 

大きいコアのA72がモチロン高速なのですが、Pico2W(M33)も頑張っていました。

特に、スレッド作成がPico2W(M33)の方が4B(A72)より早いのが面白い結果となりました。

 

処理時間比較表 (単位: ns)

数値が小さいほど高性能(高速)です。

項目 内容 RPi 4B(A72) Pico 2 W(M33) Pico(M0+)
Context Switch スレッド切り替え (k_yield) 464 1,145 2,165
ISR Resume 割り込みからの復帰 273 2,897 5,573
Mutex Lock 排他制御ロック (即時) 236 471 740
Semaphore Take 待機ありの取得 (Blocking) 615 1,794 3,205
Heap Malloc メモリ確保 376 4,199 8,830
Thread Create スレッド作成 3,876 1,481 2,870

 

性能倍率・比較まとめ

「Pico 2 W」が「初代Pico」に対してどれくらい速くなったか、および「RPi 4B」がどれほど異次元かを表しています。

比較項目 Pico 2W (M33)vs Pico(M0+) RPi 4B(A72) vs Pico 2W(M33)
基本動作(Context Switch) 約 1.9倍 高速 RPi 4B が約 2.5倍 速い
割り込み応答(ISR Resume) 約 1.9倍 高速 RPi 4B が約 10倍 速い
同期処理(Mutex/Semaphore) 約 1.6〜1.8倍 高速 RPi 4B が約 2〜3倍 速い
メモリ確保(Malloc) 約 2.1倍 高速 RPi 4B が約 11倍 速い

 

データから読み取れる特記事項

  1. Pico 2 W (M33) はPico(M0+)と比べて「約2倍」速い

    • ほぼ全ての項目で、初代Picoの半分の時間で処理を完了しています。RTOSを載せ替えるだけでシステム全体の応答性が2倍になることを意味します。

  2. スレッド作成 (Thread Create) の逆転現象

    • 表の一番下にある通り、スレッド作成だけは RPi 4Bよりも Pico 2 W の方が高速 です (1,481ns vs 3,876ns)。

    • 理由: RPi 4B (Cortex-A72) は高機能な分、メモリ管理やキャッシュの一貫性制御などのオーバーヘッドが大きいため、単純なスレッド構造体の初期化においては、構造がシンプルなマイコン (Pico 2 W) が勝ることがあります。

 

ラズパイ5(A76)のベンチマークは見送り

ラズパイ5も4B同様にRTOS実装して、テストしたのですがシリアル出力されませんでした。

 

理由はラズパイ5以降SoCからPCIE経由で各GPIO接続されているためです。

単純にUART出力されず、PCIEドライバ経由で読み取る必要がありました。

さすがに面倒なのでラズパイ5の結果は見送ることにしました。

 

まとめ

Zephyr RTOSでは、デバイスの性能(処理速度や応答速度)を簡単に測定できます。

公式ベンチマークテスト(latency_measure)が用意されています。

ラズパイ4B(A72)、Pico2W(M33)、Pico(M0+)で比較したテスト内容・結果を紹介しました。

 

コメント