NI VeriStandのベンチーマーク / パフォーマンス最適化手法

更新しました Oct 17, 2022

環境

ソフトウェア

  • VeriStand

NI VeriStandでのシステム開発中、パフォーマンスが期待通りにならない場合があります。モデルが指定したレートで実行されない、Stimulus Profileが指定タイミングで実行されないなどです。この資料では、NI VeriStandのパフォーマンスを正しく測定し、その上で取りうる対応について紹介します。

NI VeriStand Engine Architectureの理解

NI VeriStandでシステムを開発するにあたり、VeriStand Engine Architectureを理解することは非常に重要です。VeriStand Engineはシステム全体のタイミングや、ホストとターゲット間の通信を制御します。複数のループから構成されており、個々のループには優先度とデフォルトの実行レートが定義されています。下図のH/M/Lは、それぞれ高/中/低優先度を示しています。
 
VeriStand Engine Architecture

VeriStand Engine - VeriStand Help


 

NI VeriStandのベンチマーク

最適化を行うにあたり、現在のパフォーマンスを測定することが必要です。NI VeriStandのSystem Channelsにある以下のチャンネルを観測し、パフォーマンスを測定します。
 

  • Actual Loop Rate: 設定したPrimary Control Loop (PCL) に対する、実際の実行レート
  • HP Count: 高優先度ループの処理が間に合わなかった回数。ゼロであることが望ましい
  • LP Count: 低優先度ループの処理が間に合わなかった回数。ゼロであることが望ましい
  • Model Count: モデル実行が間に合わなかった回数。ゼロであることが望ましい
シミュレーションモデルを使用している場合は、以下のチャンネルも観測します。
  • Time Step Duration: モデル実行に要した時間
どのような場合でも、Actual Loop Rateを確認することが重要です。Actual Loop Rateによって、システム全体の処理速度やジッタの大きさを確認することができます。
 
System Definicion File

 

パフォーマンスの最適化

パフォーマンスの最大化

Maximizing System Performanceには、パフォーマンス最大化のためのベストプラクティスが記載されています。以下に概要を紹介します。
詳細については必ず各リンク先から、ご自身のアプリケーションに適用できるかご確認ください。
 
  • Streamlining the System Definition
    • 使用しないデバイスは、プロジェクトから削除または無効化します。
    • DAQのConversion Clock RateMaximumに設定します。
    • ソフトウェアタイミングでなく、ハードウェアタイミングを使用します。詳細は本資料の「Primary Control Loopのタイミングソース」セクションをご覧ください。
  • Configure the BIOS settings of the controller
    • Turbo Boostを有効にします。この操作により、ジッターが増える可能性があります。
    • Enabled CPU Coresを減らします。デフォルトはALLに設定されてます。
    • Asynchronousカスタムデバイスなど非同期要素において、別のCPUコアを明示的に割り当てます。
  • Configure the Ethernet settings of the controller
    • NI MAXより、イーサネット設定を変更します。
  • Select hardware for performance
    • ハードウェアタイミングをサポートするコントローラを使用します。
    • 同時サンプリングをサポートするDAQデバイスを使用します。
    • CANバスモニタを行う場合、USB CANデバイスの仕様を検討します。
    • PXIeデバイスまたはコントローラを使用します。
    • NI Real-Time Hypervisorを無効にします。
  • Improve model performance
    • 複数の小規模モデルを大規模モデルに統合し、メモリ使用量を減らします。
    • LabVIEWで作成したモデルの場合、配列連結などの関数は使用せず、配列初期化関数などで事前に配列を割り当てます。
  • Optimize reflective memory
    • Reflective Memoryを使用している場合のみ、参照します。
 

コントローラの実行モード

VeriStand Engineの実行モードには2種類あります。要件に応じて一方を選択します。
各モードにおけるVeriStand Engineの実行順序についてはPrimary Control Loop Execution Steps を参照します。
  • Parallel (Default): PCLはモデルの実行を開始すると、モデルの実行完了を待たず次の処理に遷移します。このためモデルが生成したデータをシステムで利用するまでに、1サイクルの遅延が生じます。
  • Low Latency: PCLはモデルを実行し、実行完了を待機します。モデルが生成したデータを、そのサイクル内で使用できます。Paralellで見られた1サイクルの遅延はありませんが、モデルの実行時間がPCL Rateに影響します。
 
Primary Control Loop Settings
 
 

手動でのCPU割り当て

必要に応じて、各ループに手動でCPUを割り当てることができます。
 
Processor Assignments
 
Model Settings
 
モデルの場合、Execution Orderページでモデルの複数モデルの実行順序を逐次または並列に設定できます。
モデル単体の実行時間が間に合わない場合、モデルを互いに依存関係のない状態に分割化し、それぞれを並列実行することが考えられます。
 
System Definition File - Execution Order

 

Decimationの利用

Decimationは、PCLレートに対して低優先度タスクの実行レートを落として、システム全体の負荷を軽減するために使用します。
例えばModel Processing Loopの場合は、
Model Rate = PCL Rate / Decimation
となります。PCL Rate = 100Hz、Decimation = 2の場合、Model Rateは50Hzとなります。Model Processing Loopの他に、Data Processing Loopに対してもDecimationを設定できます。
 
Target Decimatinos

 

Primary Control Loopのタイミングソース

PCLのタイミングソースは、PCLループのタイミングソースです。以下のオプションから選択します。
 
  • Automatic Timing: VeriStandは自動でタイミングソースを決定します。シャーシの構成ページで Chassis master hardware synchronization device が指定されている場合、そのデバイスをタイミングソースとして使用します。この項目が指定されない場合、VeriStandは最初に利用可能なタイミングデバイスを選択します。
  • DAQ Timing: VeriStandはシステム内のDAQデバイスをタイミングソースとして使用します。このオプションを有効にするには、少なくとも1つのアナログ入力チャンネルを持つDAQデバイスを構成ツリーに追加します。
  • Custom Device Timing: VeriStandは、指定されたカスタムデバイスをタイミングソースとして使用します。
パフォーマンスを最大化するために、ハードウェアタイミングを使用することが推奨されます。
Chassis master hardware synchronization device の設定がDAQまたはFPGAであり、PCLのタイミングソースがAutomaticであることを確認します。
 
Guidelines for Maximizing System Performance
VeriStand Help Guidelines for Maximizing System Performance よりformance

 

XNETループの設定

VeriStandはデフォルトで、CANのIncoming / Outgoing フレームを非同期カスタムデバイス内で実行します。これはXNETループとPCLとの間で、読書きに1サイクルの遅延が生じることを意味します。送受信フレームの処理レートは、Incoming frames processing rate[Hz] または Outgoing frames processing rate[Hz] で設定します。
この遅延をなくすためには、Inline Incoming Frames または Inline Outgoing Frames を有効にします。このオプションを選択すると、XNETループはInline HW Interfaceカスタムデバイスと同等の動作をします。
 
XNET Frame Configuration


その他、パフォーマンスに関連するKnowledge等については関連リンクの項目をご覧ください。