このトピックでは、RTターゲットのCPU使用率を最小化するためのガイドラインを説明します。100%を大幅に下回る値をCPU使用率の目標値にすると、ジッタが最小限に抑えられ、アプリケーションのタスクがCPU時間を取り合う状態を防ぐことができます。

LabVIEWのパフォーマンスに関する一般的なヒントについては、以下のトピックを参照してください。

  • VIの実行速度
  • 大きなデータセットのメモリ管理

ループを必要な速度で実行する

アプリケーションの各ループの実行速度は、可能な限り高速に設定しがちですが、そのように設定すると、ジッタの増加やシステムのデッドロックなど、タイミング動作に問題が発生する場合があります。たとえば、ユーザインタフェースデータをパブリッシュするループの速度が人的操作よりも高速な場合、このループによるデータの処理や応答がRTターゲットのCPUに無駄な負担をかける恐れがあります。ユーザインタフェースデータをネットワークにパブリッシュするループの速度は、ほとんどの場合2 Hz~15 Hzのレートで十分です。

ヒント タイムバジェットの作成は、アプリケーションの各ループに適切なレートを決定する際に役立ちます。

過度な並列実行を避ける

LabVIEWブロックダイアグラムの視覚的なデータフローパラダイムによって、VIでのコードの実行を簡単に並列化することができます。マルチコアシステムではこのようなVIによってパフォーマンスが向上します。ただし、並列性が高いほど、より多数のスレッドの作成と管理が必要となります。スレッドの増加によって生じるオーバーヘッドにより、パフォーマンスが影響を受ける可能性があります。通常、並列化はマルチコアシステムのパフォーマンスのみを向上させます。

  1. RTターゲットには複数のCPUコアが含まれています。
  2. コードを直列的に実行する場合に必要な演算時間の合計は、最も長い並列ブランチの実行時間にスレッド管理と切り替えのオーバーヘッドを加算した時間を超えます。

VIのパフォーマンスが並列化によって向上するかどうかを調べるために、VIの直列的な形式と並列的な形式の両方でベンチマークを行う必要がある場合があります。マルチコアRTターゲットでの並列化については、「リアルタイムアプリケーションをマルチCPUシステム用に最適化する」を参照してください。

ネットワーク共有シェア変数のパフォーマンスベンチマークを理解する

ネットワーク共有シェア変数には、CPU使用状況、データ転送の頻度、アプリケーションの変数の数の間の線形関係が示されます。ネットワーク共有シェア変数のCPUパフォーマンスの詳細については、ni.comに掲載されているパフォーマンスベンチマークを参照してください。ネットワーク共有シェア変数は、主に頻度の低い、最新値のデータ転送アプリケーションに使用すべきです。2つの演算デバイス間での連続的なデータストリームが必要な場合は、ネットワークストリーム関数を使用します。一般に、データ転送の頻度が低ければ、CPUリソースを過剰に使用することなく、多数のネットワーク共有シェア変数を使用できるのが普通です。ただし、ネットワーク共有シェア変数の数を減らしてCPUの使用を最適化する必要がある場合は、個々のデータ項目を配列またはクラスタにまとめ、1つのネットワーク共有シェア変数を使用してその配列もしくはクラスタを転送することを検討してください。

可能な限りタスクを分散する

RTターゲットでのCPU使用率を最小化する場合は、特定のタスクをデスクトップコンピュータかFPGAターゲットに分散することを検討してください。たとえば、ネットワーク共有されたシェア変数を、RTターゲットではなくホストコンピュータでホストすることが考えられます。

メモ 1つのRTシェア変数に複数のコンピュータからアクセスする場合はRTターゲットでホストします。

特定タイプのタスクの実行に最適なデバイスを決定する際は、以下のガイドラインに従ってください。

タスク 適切なデバイス
データ収集 RTまたはFPGA
制御ループ RTまたはFPGA
ロギングまたは監視を目的としたデータ解析 (オフライン) デスクトップコンピュータ
データロギング RTまたはデスクトップコンピュータ
ネットワークで共有されたシェア変数をホストする デスクトップコンピュータまたはRT
メモ 最も多くのCPU時間を使用するVIとスレッドは、Real-Time Trace Viewerを使用して特定できます。