在Soc性能分析的时候,往往需要看一些master或slave的busy / idle状态占比,如果能像看波形那样看到各个master/slave在各个时间段的状态,这样可以非常直观地看出性能瓶颈点。
Chrome提供了一个可视化的trace viewer工具就可以达到这样的效果。
参考https://limboy.me/2020/03/21/chrome-trace-viewer/
在chrome浏览器中输入chrome://tracing/即可打开此工具,然后load你的json文件,就可以查看波形了。Json文件的格式,还可以参考https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit#
如下的一个示例中,
"name": "休息", // 事件名,会展示在 timeline 上 "cat": "测试", // 事件分类,类似 Tag,会在选中一个事件的时候,在下方选项卡中显示 "ph": "X", // phase,常用的有B / E / X / M,分别表示begin /end / complete / metadata event "ts": 0, //事件 开始发生的时刻点 "pid": 0, // process id "tid": 1, // thread id "dur": 28800000000, // duration,跟 phase X 搭配使用,表示事件的持续时间 "args": {"duration_hour": 8, "start_hour": 0}} // 附加参数,在选中一个事件的时候,在下方选项卡中显示
|
注意:
1. ts 和dur 的时间单位为 微秒(us)。
2. 如果phase为M,则name只能为以下5个中的一个。
[
{"name": "休息", "cat": "测试", "ph": "X", "ts": 0, "pid": 0, "tid": 1, "dur": 28800000000, "args": {"duration_hour": 8, "start_hour": 0}},
{"name": "学习", "cat": "测试", "ph": "X", "ts": 28800000000, "pid": 0, "tid": 1, "dur":3600000000 , "args": {"duration_hour": 1, "start_hour": 8}},
{"name": "休息", "cat": "测试", "ph": "X", "ts": 0, "pid": 0, "tid": 2, "dur": 21600000000} ,
{"name": "process_name", "ph": "M", "pid": 0, "args": {"name": "一周时间管理"}},
{"name": "thread_name", "ph": "M", "pid": 0, "tid": 1, "args": {"name": "第一天"}},
{"name": "thread_name", "ph": "M", "pid": 0, "tid": 2, "args": {"name": "第二天"}}
]
有些时候,会看到在json文件开始的时候有"displayTimeUnit",文档中将可以选择ms 和ns,但试了一下,好像ts 和duration的时间单位依然是us。
{"displayTimeUnit": "ms", "traceEvents":[ ….. ]} |