FAQ 2000120 : SSPのスレッド実行時のCPU負荷を測定する方法はありますか?

スレッド形式のSSPアプリケーション実行時のCPU負荷を測定する方法を以下に示します。また、お客様が独自の測定ルーチンを作成する際にご利用いただける簡易サンプルをご提供します。


測定方法
1. 概要
プログラムを実行するため、SynergyキットをPCに接続します。次に、サンプルプログラム(以下に添付)を使用してCPU負荷を測定します。プログラム(cpu_load_thread_entry.c)中の詳細なコメントで、アルゴリズムと実装の詳細について説明しています。

CPU負荷を測定するには、①他のスレッドを一切実行せず、②優先順位の最も低いスレッドを短時間実行して、③カウンター変数をインクリメントする方法があります。実行時間が終了すると、その値は他のスレッドを実行していない条件での基準値となります。このようにしてCPU負荷を測定します。

(注意:他のすべてのスレッドを実行している状態で同じ測定を実行すると、優先順位の低い測定用スレッドは優先順位の高いスレッドによってブロックされてしまい、許容時間一杯までカウントされないため、最終的なカウンター変数の値は小さくなります)

SynergyキットのSK-S7G2では、以下に添付するサンプルデザインを実行することができます。お客様がSynergyキットSK-S7G2をお持ちで無い場合は、プログラム(cpu_load_thread_entry.c)内のデザインに関する説明をお読みになり、そこに記載されている実装に関するガイドラインと以下の実装に関するガイドラインを参考にして、デザインを作成してください。

2. 実装
Synergyプロジェクトでこの方法を使用するには、以下を実行します。

(1)プロパティを次のように変更したスレッドを新規追加します。
   Symbol: cpu_load_counter_thread_entry
   Name: CPU Load Counter Thread
   Priority:30(またはスレッドの優先順位が確実に最下位になる別の値
        (値を大きくすると優先順位が下がります))
   Auto start:enabled

(2)プロパティを次のように変更したスレッドを新規追加します。
   Symbol: cpu_load_thread_entry
   Name: CPU Load Thread
   Priority:1(またはスレッドの優先順位が確実に最上位になる別の値
       (値を小さくすると優先順位が上がります))
       優先順位0は、ThreadX内部で利用するために確保されています。
   Auto start:enabled

(3)「cpu_load_counter_thread_entry.c」ファイルと「cpu_load_thread_entry.c」ファイルの内容を、
 サンプルデザインに付属の二つのファイルに置き換えてください。

(4)必要に応じて他の任意のスレッドをシステムに追加し、「Auto start」が「disabled」に設定されていることを確認します。

(5)g_threadsToResume[]配列に対して通常は自動実行される任意のスレッドを追加します。


3. まとめ
以上の方法を実行することで、測定方法が実装され、CPU負荷が測定できるようになります。

 

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア
Renesas Synergy™ マイクロコントローラ

 

他にご質問がございましたら、リクエストを送信してください