Fork me on GitHub
侧边栏

本地打开超大Trace文件(通过trace_processor_shell)

在实际的问题分析过程中,我们经常会碰到非常大的Trace文件(大于2GB),直接扔进uiperfetto.dev是没法打开的,这是因为浏览器内存的限制。这时候我们就需要使用官方提供的trace_processor_shell工具来本地打开大文件。

0. trace_processor_shell 工具下载

官方下载地址:https://github.com/google/perfetto/releases, 找到最新的release版本,选择自己的平台下载即可:

image

下载之后里面就会有trace_processor_shell工具(以windows 平台为例)

image

trace_processor_shell是Perfetto 开源项目的核心工具之一,提供高性能的本地Trace解析服务。通过-httpd 参数启动 HTTP服务器后, 它允许:

  • 本地原生加速:绕过浏览器WASM的性能限制,直接调用C++实现的解析引擎。基于Rust/C++混合实现的解析引擎,优化了内存布局和并行处理,支持流式解析超大型trace文件。
  • 交互式分析:与Perfetto Ul深度集成,支持动态查询和可视化。
  • 离线调试:无需上传trace 到云端,保护隐私并支持内网环境。

其他的参数

参数 作用 示例值
--http-port 指定监听端口 --http-port : 8080
--preload 预加载常用数据表 --preload sched
--num-threads 设置解析线程数(默认CPU 核数) --num-threads 8

1.使用 trace_processor_shell 打开 Trace 大文件

./trace_processor_shell --httpd ./atrace_file

image

这时候在网页端打开 https:/ui.perfetto.dev,会有下面的弹框

image

弹框选项功能详解如下

  1. YES, use loaded trace
  • 功能:直接复用当前Trace Processor已加载的trace文件状态(即命令行中指定的../jank—航旅纵横—火车票—上下滑动超级卡顿.perfetto—trace).

  • 适用场景:

若你已通过trace_processor_shell——httpd加载了trace文件,且希望UI直接使用当前进程的解析状态(包括已执行的SQL查询、过滤条件等),选择此选项。

  • 优势:

避免重复解析文件,节省时间和内存。

  1. YES, but reset state

功能:强制重置Trace Processor状态,重新加载当前trace文件(或加载新文件)。

适用场景:

  • 需要清除当前Trace Processor的所有状态(如临时查询结果、过滤器等),重新开始分析。
  • 想通过同一端口加载另一个trace文件(需先停止当前进程或更换端口)。

等效操作:

等同于关闭当前trace_processor_shel1进程后重新执行命令。

  1. NO, Use builtin WASM
  • 功能:完全绕过本地Trace Processor服务,改用浏览器内置的WebAssembly(WASM)引擎解析trace文件。

  • 适用场景:

    • 本地Trace Processor 服务不可用或存在兼容性问题。
    • 需要支持分享链接、下载修改后的trace文件等WASM模式专属功能。
  • 代价:

大文件(如>100MB)解析速度显著下降,且可能因浏览器内存限制崩溃。

如果选择YES,use loaded trace,打开Trace后,下面这几个功能是不可用的

image

2.命令行启动vs直接打开UI的区别

通过命令行启动(trace_processor_shell --httpd)

  • 核心机制:

本地启动一个高性能的C++Trace Processor服务(监听127.0.0.1:9001),提供原生加速的trace解析能力。

  • 优势:

    • 性能:原生代码解析速度远超WASM,尤其适合大型trace文件(如>100MB)。
    • 功能扩展性:支持SQL查询、自定义指标计算等高级功能。
    • 状态保持:Trace Processor的解析状态(如SQL临时表)可跨页面会话保留。
  • 限制:

    • 无法直接通过UI分享trace文件链接或下载修改后的文件。

    • 同一时间仅允许一个浏览器标签页使用加速服务。

直接打开UI网页(ui.perfetto.dev)

  • 核心机制:

完全依赖浏览器内置的WebAssembly 引擎解析 trace文件,无本地服务参与。

  • 优势:

    • 便捷性:无需安装或启动本地工具,适合快速查看小型trace。

    • 功能完整性:支持分享链接、下载修改后的trace文件等协作功能。

  • 劣势:

    • 性能瓶颈:WASM解析速度慢,大文件可能导致浏览器卡顿或崩溃。

    • 功能限制:不支持部分高级SQL查询和自定义分析功能。

总结建议

优先命令行启动:处理大型trace或需要复杂分析时,使用trace_processor_shell --httpd提升性能。

临时轻量分析:直接上传到ui.perfetto.dev更方便,但需注意文件大小限制。

posted @ 2025-05-18 15:49  yooooooo  阅读(835)  评论(0)    收藏  举报