在 Perfetto UI 中合并 trace

Perfetto UI 可以同时打开多个 trace 文件并将其合并到一条 共享的时间线上:来自两个设备的 trace、应用 trace 与系统 trace、 或同场景的多次采集。合并对话框分析每个文件,让你配置它们如何 对齐以及每个文件属于哪台机器,并在打开前发出警告,如果某些事件 无法放在共享时间线上的话。

关于在脚本或 CI 中合并,参见 使用 Trace Processor 合并 trace。 关于底层模型,参见 Trace 合并的工作原理

何时使用

对同时采集且应归属同一条时间线的 trace,使用"同时"合并。 典型场景:

对比不同时间点的运行(回归前/后)是另一回事;对话框的 "Trace Comparison" 选项卡尚未实现,并链接到跟踪的 GitHub issue

打开多个 trace

三种等效入口:

任意一种方式都会打开 Open Multiple Traces 对话框:

合并对话框,包含两个已分析的 trace

每个文件在后台被分析(其格式、时钟和机器使用一次性的浏览器内 Trace Processor 实例进行检测),并显示一张卡片,展示其大小和 格式。使用 Add more traces 扩大文件集,或使用垃圾桶图标 移除文件。

配置合并

对话框仅在存在真正选择时才显示控件;一组可自行对齐的 trace 只显示绿色状态和 Open Traces 按钮。

Align to:共享时间线

Align to: 行选择其他所有内容对齐的参照:

按文件对齐

携带自身 clock snapshot 的 trace 会自动放置并在卡片上显示。 对于其余文件,Align: 下拉菜单提供:

机器

Machine: 下拉框将文件归属到一台设备。保留 Default 将 trace 合并到共享时间线上与主机数据并列,或使用 + Add machine... 创建命名机器(例如 "server"),使合并后的 trace 将该设备的 CPU、进程和线程保持独立分组。为多个文件选择同一台 机器可将它们全部放在该设备上。

将 trace 分配到命名机器

本身是多机 trace 的文件(通过 traced_relay 录制) 则显示 Machines (N): 表格,用于命名每个嵌入的机器 ID; 名称在所有 ID 都命名后生效。

状态面板

在配置过程中,对话框会重新运行一次试运行合并(在浏览器中, 带防抖),并报告结果:

一个会丢弃事件的固定偏移量

阻塞性错误(重复文件名、分析失败的文件、非整数偏移量)会禁用 Open Traces 按钮,直到修复为止。两个同名文件无法合并; 先在磁盘上重命名其中一个。

打开并查看结果

Open Traces 加载合并后的 trace。来自命名机器的 Track 会 携带机器名作为后缀,例如 quote_service 4321 (server); 来自默认机器的 Track 则不带后缀。下图中,手机应用的 RPC: GetQuote slice 与后端在不同机器上录制的 HandleGetQuote 工作对齐在一条时间线上:

合并后的 trace:手机应用和后端服务器在同一条时间线上

时间线覆盖所有 trace 录制窗口的并集,因此间隔几分钟录制 的两个 trace 会合理地产出一条较长的时间线,两端各有活动簇。

Trace Info 页面(侧边栏中的 info 图标)按输入 trace 和机器 分别显示统计信息、导入错误和数据丢失。

在 UI 之外复用合并

该对话框专为一次性、交互式合并而设计。如果你正在构建一个 每次运行生成多个 trace 的工具或系统(性能测试框架同时跟踪 客户端和服务器、多设备测试平台),你可能不希望用户每次采集 都重新配置此对话框。相反,让工具将其 trace 和 trace manifest 打包成 一个归档文件:该归档文件可直接在 UI 或 trace_processor 中 打开,合并已预先配置好。

对话框的页脚有助于快速启动:

后续步骤