Chrome://tracing

导言

chrome://tracing是个格式简单的可视化方法和格式,可以清晰的对比每个过程/方块的(个数、大小、顺序),来快速找到热点。

可视化

  1. Chrome浏览器chrome::tracing, 缺点:只会自动区分完全包含的时间块,但是对时间范围部分重叠的时间块会重合在一起看不清
  2. 优点:对时间范围部分重叠的时间块也会自动展开
    1. speedscope劣势:Thread会分页显示
    2. perfetto十分推荐:有彩色,查找很好用。

数据格式

主要的格式是事件追踪格式,即 Trace Event Format。它本质上是一个包含不同事件(threads, processes, events)的 JSON 文件。你需要将这些事件按时间点记录下来,并按照以下结构组织:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"traceEvents": [
{
"pid": 1,
"tid": 100,
"ts": 123456789,
"ph": "X",
"name": "Event 1",
"dur": 1000,
"args": {
"info": "additional data"
}
},
{
"pid": 1,
"tid": 101,
"ts": 123456800,
"ph": "B",
"name": "Event 2",
"args": {
"info": "additional data"
}
},
{
"pid": 1,
"tid": 101,
"ts": 123456900,
"ph": "E",
"name": "Event 2",
"args": {
"info": "additional data"
}
}
]
}

关键字段说明

  • pid: 进程 ID (Process ID),表示事件所属的进程。可以是任意整数。
  • tid: 线程 ID (Thread ID),表示事件所属的线程。可以是任意整数。
  • ts: 时间戳 (Timestamp),以微秒为单位,表示事件发生的时间。
  • ph: 事件类型 (Phase),标记事件的种类。常见的类型有:
    • "B":开始事件 (Begin),表示某一事件的开始。
    • "E":结束事件 (End),表示某一事件的结束。
    • "X":完整事件 (Complete),包含了持续时间(dur 字段),表示某个事件从开始到结束。
  • name: 事件名称,用于描述事件类型或任务。
  • dur: 持续时间 (Duration),以微秒为单位,表示该事件的持续时间(仅适用于 "X" 类型的事件)。
  • args: 额外信息 (Arguments),这是一个可选的字段,可以包含其他任何自定义信息。

参考文献

Author

Shaojie Tan

Posted on

2024-10-22

Updated on

2025-01-30

Licensed under