2022/2/17
製品
カテゴリー
タグ
1934 Views
カーネル情報出力ポイントの挿入
使用するドライバのイベントID出力方式に合わせて、プロジェクト設定の「イベントID出力方式」を設定します。
「プロジェクト設定」ダイアログで、「カーネル情報出力ポイント挿入」を選択します。
カーネル情報出力ポイントの挿入
カーネル情報を出力する為の専用テストポイントをソースコードに挿入します。
カーネル情報出力ポイントの挿入箇所は、LinuxKernel の context_switch 関数内に挿入することになります。
関数の場所はカーネルバージョンやディストリビューション、CPUによって異なる場合がありますので注意してください。
例えば、Armadillo-440環境であれば、”Linux/Kernel/sched.c”に、RaspBerryPiでは”linux/Kernel/sched/core.c”となります。
context_switch関数内のswitch_toの直前にカーネル情報出力ポイントを挿入します。
ソースコードウィンドウ上からカーネル情報出力ポイントを挿入します。
- ソースコードウィンドウ上で、conext_switch関数のswitch_toの直前で右クリック。
- ポップアップメニューから「カーネル情報出力ポイントの挿入」を選択。
- 以下のダイアログで、各情報を格納している構造体を入力。
- 構造体を設定して、[OK]をクリックすると、カーネル情報出力ポイントが挿入されます。
なお、context_switch のあるソースファイルに自動挿入等を行っていない場合、以下のメッセージが表示される場合があります。
-
カーネル情報出力ポイント挿入の挿入…を選択した時
上記のように関数を定義します。なお、自動挿入または関数名の登録を行っている場合は不必要になります。 -
カーネル情報出力ポイント設定し、カーネル情報出力ポイント挿入後
この場合はソースコードウィンドウ上で右クリックから以下を選択しインクルードファイルを生成してください。
レポートデータの取得とデータの解析
カーネル情報出力ポイントが挿入されたソースコードをコンパイルし、ターゲットを動作させて、DT+Traceでテストレポートを取得します。
カーネル情報出力ポイントによりトレースされたデータは、テストレポート上で、「ステップ」欄に「## Kernelnfo」と表示されます。
イベント番号は、「イベントID」欄に表示されます。
また、KernelInfoステップのデータに続いて、「関数」欄に「***** Dump memory *****」と表示されるデータは、
変数として出力されたTID、PID、Cmd のデータです。
カーネル情報出力ポイント通過以降のレポートデータは、次のカーネル情報出力ポイント取得まで、同じイベントID が割り振られます。
プロセス解析モードの有効化
この設定を有効にすることで、コアやイベントID毎に解析結果を表示できるようになります。
- DT+Traceアプリのメニュー > ツール > 環境設定を選択。
- 「環境設定」ダイアログで、解析を選択。
- 「プロセス解析モードを有効にする」をチェックON。
関数遷移スコープでのデータ解析
以下の手順で、解析結果が表示されます。
- DT+Traceアプリのメニュー > レポート解析 > 関数遷移スコープ
横軸が時間軸で、上部には各コアの動作区間を示すグラフ表示、
その下の縦軸には、プロセス > スレッド > 関数名 のツリーが表示され、
コア、プロセス、スレッド単位から関数単位までの状態遷移を確認することができ、
マクロ視点からミクロ視点まで、多角的に「見える化」することで、ソフトの動きを把握しやすくします。
さらに関数遷移スコープのグラフ上をダブルクリックすることでテストレポートの該当位置にジャンプしたり、
2つのカーソルで時間情報の確認もできます。
プロセス占有率スコープでのデータ解析
- DT+Traceアプリのメニュー > レポート解析 > イベントトレース > プロセス占有率スコープ
- 「解析範囲指定」ダイアログで、解析範囲を指定して、「OK」をクリック。
横軸が時間軸で、各プロセスの占有率を折れ線グラフで表示します。
また、移動させたカーソル部分のタイミングにおける占有時間、占有率、最大・最小時間をリスト表示します。
負荷の高いプロセスを一目で確認できます。
関数遷移スコープと同様に、グラフ上をダブルクリックすることでテストレポートの該当位置にジャンプができます。