20081120 goto ET2008-print名古屋大学大学院 情報科学研究科 情報システム学専攻...

Post on 13-Jun-2020

4 views 0 download

Transcript of 20081120 goto ET2008-print名古屋大学大学院 情報科学研究科 情報システム学専攻...

名古屋大学大学院 情報科学研究科 情報システム学専攻 高田・冨山研究室 博士課程前期課程2年 後藤 隼弐

2 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

▶ 背景

▶ TLVの紹介

▶ TLVデモンストレーション

▶ おわりに

3 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

 組込み分野でのマルチコアプロセッサ利用の増加

4 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

5 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

[453665]:[1]: task 4 becomes RUNNABLE. [453670]:[1]: dispatch to task5. [454235]:[2]: leave from inh 1056. [456997]:[3]: task 6 becomes RUNNABLE. [457665]:[3]: dispatch to task6. [457886]:[2]: task 4 becomes SUSPENDED. [459345]:[4]: task 5 becomes RUNNABLE. [459665]:[4]: dispatch to task5. [460457]:[1]: task 5 becomes WAITTING. [461007]:[1]: task 4 becomes RUNNABLE. [463665]:[1]: dispatch to task4. [469005]:[3]: task 6 becomes SUSPENDED. ・

・・

・・・

4コア上で動くTOPPERS/FMPのトレースログの例

 トレースログを可視化表示するツールの開発へ

6 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

シミュレータ RTOS-A

RTOS-A

RTOS-D

RTOSが出力する トレースログ

シミュレータが出力する トレースログ

RTOSが出力する トレースログ

様々なRTOSが出力する トレースログ

周期ハンドラのジッタ

TLV 様々な形式の

トレースログに対応

RTOS-C RTOS-B 割込み発生箇所

タスクの状態変化

CPU使用率の変化

様々な情報表示 に対応

7 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

マーカー マーカー間の時間表示

タスクの状態遷移を表示している

拡大縮小などの操作

表示タスクの切替え

タスクの情報 テキストログ

8 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

実行状態 実行可能 状態

待ち状態 起動 終了

RTOS生成過程

TLV

トレースログ ファイル

リソース ファイル

表示

RTOS コンフィギュレーション

ファイル

RTOS初期化構成 ファイル

ソフトウェア部品

RTOSライブラリ コンフィギュレーション

コンパイル & リンク

RTOS実行

アプリケーション ソースファイル

RTOS実行形式 ファイル

10 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

11 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

ココ

13 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

▶ TLVが想定する可視化対象

▶ TLV全体像

▶ JSON形式

▶ 各ファイルの説明

14 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

名前

属性1 属性2 …

リソースの例

TASK1

state …

タスクの例

DORMANT RUNNABLE RUNNING WAITING RUNNABLE

10ns 120ns 315ns 455ns 520ns t

RUNNING

605ns

DORMANT

725ns

振舞い1 振舞い2 …

activate()

exit() …

15 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

図凡例

ファイル

処理

データ

入力ファイル 入力ファイルが 依存するファイル

入力ファイルが 依存しないファイル

TLVにより 生成されるファイル

TLV

トレースログ ファイル

リソース ファイル

可視化ルール ファイル

表示

TLVデータ

可視化ルールの適用

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

16 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

17 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

18 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

[1551] dispatch to task 1. [2409] task 1 becomes WAITING. [2414] dispatch to task 5. [12005] task 1 becomes RUNNABLE. [13013] dispatch to task 1. [13024] task 1 becomes WAITING. [13028] dispatch to task 5. [23005] task 1 becomes RUNNABLE. [24013] dispatch to task 1. [24024] task 1 becomes WAITING. [24028] dispatch to task 5. [34005] task 1 becomes RUNNABLE. [35013] dispatch to task 1. [35024] task 1 becomes WAITING. [35028] dispatch to task 5. [45005] task 1 becomes RUNNABLE.

19 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

[1551] dispatch to task 1. [2409] task 1 becomes WAITING. [2414] dispatch to task 5. [12005] task 1 becomes RUNNABLE. [13013] dispatch to task 1. [13024] task 1 becomes WAITING. [13028] dispatch to task 5. [23005] task 1 becomes RUNNABLE. [24013] dispatch to task 1. [24024] task 1 becomes WAITING. [24028] dispatch to task 5. [34005] task 1 becomes RUNNABLE. [35013] dispatch to task 1. [35024] task 1 becomes WAITING. [35028] dispatch to task 5. [45005] task 1 becomes RUNNABLE.

{ "TimeScale" :"ns", "ConvertRule" :"asp", "ResourceHeader":"asp", "Resources": { "Task":[ { "name" :"LOGTASK", "id" :1, "atr" :"TA_ACT", "pri" :3, "exinf":"LOGTASK_PORTID", "task" :"logtask_main", "stksz":4096, "stk" :"NULL" }, ...

20 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

リソースヘッダ ファイル

変換ルール ファイル

21 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

リソースヘッダ ファイル

変換ルール ファイル

{ "asp": { "Task":{ "DisplayName":"タスク", "Attributes":{ "name":{ "VariableType" :"string", "DisplayName" :"名前", "AllocationType":"Static", "CanGrouping" :false }, "id":{ "VariableType" :"int", "DisplayName" :"ID", "AllocationType":"Static", "CanGrouping" :false }, ...

22 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

リソースヘッダ ファイル

変換ルール ファイル

{ "asp": { "Task":{ "DisplayName":"タスク", "Attributes":{ "name":{ "VariableType" :"string", "DisplayName" :"名前", "AllocationType":"Static", "CanGrouping" :false }, "id":{ "VariableType" :"int", "DisplayName" :"ID", "AllocationType":"Static", "CanGrouping" :false }, ...

{ "asp":{ "\[(?<time>\d+)\] dispatch to task (?<id>\d+)\.":[ {"EXIST{Task(state==RUNNING)}":[ "[${time}]Task(id==ATTR{Task(state==RUNNING).id}).preempt()", "[${time}]Task(id==ATTR{Task(state==RUNNING).id}).state=RUNNABLE" ]}, "[${time}]Task(id==${id}).dispatch()", "[${time}]Task(id==${id}).state=RUNNING" ], "\[(?<time>\d+)\] task (?<id>\d+) becomes (?<state>[^\.]+)\.":[ { "Task(id==${id}).state==DORMANT && ${state}==RUNNABLE" : "[${time}]Task(id==${id}).activate()", ...

検索する正規表現

置換する文字列 置換する文字列

置換条件

置換する文字列

文字列を抽出して利用できる

23 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

可視化ルール ファイル

24 トレースログ可視化ツール TraceLogVisualizer(TLV)のご紹介

トレースログ ファイル

リソース ファイル

TLV

可視化ルール ファイル

表示

TLVデータ

TLVデータ生成

TLVファイル

標準形式変換 リソースヘッダ ファイル

変換ルール ファイル

可視化ルール ファイル

{ "VisualizeRules":{ "Task.state":{ "RUNNING" :"runningShapes", "RUNNABLE":"runnableShapes", "WAITING" :"waitingShapes", "DORMANT" :"dormantShapes", ... }, "Task.activate()":"activateShapes", "Task.exit()" :"exitShapes" }, "Shapes":{ "runningShapes":[{ "Type":"Rectangle", "Area":["0,0","100%,80%"], "Pen" :{"Color":"0000ff00","Width":3.0}, "Fill":"6600ff00" }], "runnableShapes":[{ "Type":"Line", "Coordinates":["f(0),40%","t(0),40%"], "Pen":{"Color":"00ffff00","Width":3} }], ...

属性に対して指定

振舞いに対して指定

表示する図形の記述