2022/4/7
製品
カテゴリー
タグ
2373 Views
マルチコア環境でのコア毎のプロセス占有率の確認
DT10では、ドライバでテストポイント情報の出力を行う際にコア情報を取得することで、該当のログ(処理)がどのコアによって実行されたのか、およびその実行経路、ほかのコアで実施されている処理との関連性(処理の割り込みなどのタイミング)を解析できます。このドキュメントでは、どのようにしてコアの情報をDT10で取得するのか、そしてどのように解析するのかについて説明します。
Contents
作業フロー
以下のように、まずはコアの情報をDT10で取得できるようドライバおよびアプリケーションの設定を変更します。そのうえでデータを取得するとコアの情報が取得できますので、コアの情報を使ってフィルタリングを実施しその際のテストレポートを手動で保存します。
フィルタリングした状態で保存されたテストレポートは該当コアの情報のみが記載されていますので、このテストレポートから「プロセス占有率スコープ」から確認することで、該当コアのみに絞り込んだプロセス(タスク)ごとの負荷を確認できます。
サンプルドライバのダウンロード
対応OS | 接続方式 | 言語 | イベントID出力方式 | ダウンロード |
---|---|---|---|---|
NonOS | GPIO2bit | C/C++ | ダウンロード |
ドライバのカスタマイズ
ターゲット環境に合わせてドライバのカスタマイズが必要になります。
ドライバ関数の説明やカスタマイズにつきましてはこちらをご参照ください。
ドライバファイルの207行目~215行目でコア情報の取得を実施しています。209行目で現在実行されているコアの情報を取得するAPIを呼び出す必要がありますので、こちらをお使いの環境のAPIに差し替えてください。
※“smp_processor_id()”はLinux環境での例です。また、GPIO接続使用時は4コアまで対応しています。
DT10設定の変更
初期設定ではコア情報を取得できませんので変更します。DT10上部メニュー「テスト実行」からいちばん上の項目「テストレポート収集条件設定」を選択します。「テストレポート収集条件設定」画面が開きます。こちらの画面のいちばん下のチェックボックス「コア情報を収集する」にチェックをつけてください。
なお、手順1と手順2については、最初の1回だけ実施すれば問題ございません。
ログの取得
特にマルチコア特有の手順はありません。通常DT10でログを取得するのと同じようにログを取得してください。
※ドライバは手順1でカスタマイズしたファイルをご使用ください。
ログの内容を見てみると、以下のようにテストレポートにコア番号が記載されます。
また、関数遷移スコープはコアごとに実行されたタスクや関数が分けて表示されます。
これらにより、コアごとに実行した処理や実行経路、および処理タイミングなどが分かります。
コアごとにログ表示をフィルタリング
DT10上部メニュー「レポート解析」からいちばん下の項目「テストレポートフィルタ」を選択します。
フィルタの設定画面の「コア選択」にチェックをつけ「設定値」列をクリックすると、以下のような設定画面が表示されますので、解析したいコアを選択します。
フィルタ内容がログに反映されます。
フィルタリングしたログ(①)を保存
該当コアのみ表示されたログを保存します。
まず、ログ上で右クリックし、「トリミング」を選択します。
設定画面が開きますので、以下の2点を設定します。
-
保存場所
- 現在のプロファイルのフォルダを選択します。
-
「テスト項目名をつける」のチェックをONにし、任意の名前を付ける
- どういった操作のどのコアのログかを判別できるようにすると、後からどのログを開くべきかが分かりやすいです。
なお、現在のプロファイルは以下のように確認できます。
「トリミング設定」画面で上記の設定を行った後に「OK」ボタンを押下し、ログを保存します。以下のようなメッセージが表示されますが、「はい」を選んで次に進みます。
トリミングされたログは自動でログ一覧に追加されています。トリミングされたログを選択しOKボタンをクリックすると、該当コアのみのログが開きます。
①のログを開いてプロセス占有率スコープを表示
手順5までで該当コアのみのログが作成されました。この状態で「プロセス占有率スコープ」を表示すると、該当コアのみのタスクの占有率が表示されます。