マルチCPUを使用するかどうかを決定する
- 更新日2025-02-20
- 4分で読める
NI RT Extensions for SMP (SMP用NI RT拡張機能) をインストールすると、Real-Timeモジュールによる自動負荷調整という処理によって、使用可能なCPUにスレッドがバランスよく割り当てられます。自動負荷調整機能を使用すると、マルチCPUシステム (マルチコアシステム、マルチプロセッサ、SMPシステムなど) によるRTターゲットVIの並列処理の利点を活用することができます。ただし、CPU間でのデータ転送は、1つのCPU内で実行される処理間でのデータ転送よりも時間がかかります。また並列処理の利点が活かされないシングルポイントI/Oアプリケーションでは、CPUスケジューラのオーバーヘッドによってリアルタイムシステムのレイテンシが若干増加するため、処理が遅くなる可能性があります。一般に、システムリソースの割り当てとCPU間のデータ転送に必要な時間よりも、並列処理によって節約される時間の方が大きいアプリケーションでのみ、マルチCPUを使用する意味があります。
マルチCPUが有効なアプリケーション
多くのリアルタイムアプリケーションには、タイムクリティカルタスクと並列して実行されるデータロギングタスクやホスト通信タスクが含まれます。たとえば、以下のブロックダイアグラムは、2つの並列ループのあるRTターゲットVIを示しています。このアプリケーションでは並列処理アーキテクチャが採用されているため、VIの書き換えを行わずに、マルチCPUリアルタイムシステムで実行するだけでパフォーマンスが向上します。
複数のタイムクリティカルプロセスを必要とするアプリケーションは、マルチCPUによってパフォーマンスが改善される可能性があります。タイムクリティカルタスクはプリエンプティブであるため、通常シングルCPUシステムではタイムクリティカルループは1つだけにするべきです。一方、マルチCPUシステムでは、各CPUで1つずつタイムクリティカルループを実行できます。
マルチCPUを有効に活用できないアプリケーション
多くのリアルタイムアプリケーションはマルチCPUシステムに切り替えるだけでパフォーマンスの向上を期待できますが、VIの書き換えが必要な場合や、マルチCPUの利点が活かされない場合もあり得ます。1つの連続的ループで構成されるリアルタイムアプリケーションは、マルチCPUに切り替えてもパフォーマンスに変化はありません。ループ内に複雑な処理が含まれている場合は、パイプラインアーキテクチャを実装することでパフォーマンスの改善を図ることができます。ただし、主にシングルポイントI/O処理で構成されるアプリケーションは、CPUスケジューラによるわずかなレイテンシのため、たいていの場合マルチCPUに切り替えても利益がありません。
共有リソースを使用するアプリケーションは、マルチCPUに切り替える場合、共有リソースによる競合を回避するよう修正する必要があります。共有リソースの同時要求は並行した実行処理を妨げるため、マルチCPUシステムのパフォーマンスの利点が損なわれます。