Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
名古屋大学大学院 情報科学研究科 情報システム学専攻 高田・冨山研究室 博士課程前期課程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} }], ...
属性に対して指定
振舞いに対して指定
表示する図形の記述