首页 > 其他分享 >tracer ftrace笔记(7)—— Perfetto简介

tracer ftrace笔记(7)—— Perfetto简介

时间:2022-09-18 23:25:19浏览次数:81  
标签:ftrace trace slice UI perfetto SQL tracer Perfetto

一、Perfetto 简介

1. Perfetto 支持多种数据来源,systrace、atrace、sys stat、Heap Profiles、logcat. 也支持动态配置和定制。

2. Perfetto UI 一些常见的表述
(1) slice: 片段,对应一次Java代码中的 Trace.beginSection 或C++代码中的 ATRACE_BEGIN 记录的事件。
(2) track:水平时间线,一个线程会显示为一个track.
(3) counter:计数器,离散的数值统计点,对应一次Java代码中的 Trace.traceCounter 或C++代码中的 ATRACE_INT 记录的事件。如trace上VSYNC-app/VSYNC-sf显示的内容。
(4) tread_state: 线程状态,标识出线程是sleep, running 还是 runnale.

 

二、UI界面介绍

1. Current Trace 栏

(1) "Show timeline" 跳转到trace解析界面

(2) "Download" 下载trace

(3) "Query(SQL)" 输入查询SQL脚本,Ctrl+Enter触发查询。

(4) "Metrics" 里面实现了多个SQL查询脚本,比如选中 Select a metric: android binder 可以查看各个进程binder行为,比如下面这个进程在整个trace文件中只进行了2次binder reply。

  process_breakdown {
    process_name: "/odm/bin/hw/[email protected]"
    pid: 1474
    slice_name: "binder reply"
    count: 2
  }

(6) "Info and stats" 显示Metric Errors、Import errors 和 System info and metadata 信息。

2. Convert trace 栏

(1) UI界面点击左侧边栏的"Convert to .systrace",可以将perfetto trace转换为可以文本打开的systrace文件。

3. Support 栏

(1) "Keyboard shortcuts" 可以显示支持的快捷键。

(2) "Document" 可以打开帮助文档,Perfetto DOCS:https://perfetto.dev/docs/concepts/buffers

(3) "Flags" 可以查看Perfetto列出的一些性能指标,关注的话可以设置为enable。各个flags其实就是一个个的SQL查询,在打开trace的时候自动解析,比如打开trace时,搜索框中显示的各个"Computing android_setup metric"就是在解析这些SQL性能指标。显示后这些metric控制显示的条目都会靠前显示,且有metric标签标记。比如常用看是哪个app启动的"Android App Startups"就是一个metric,在"Flags"中配置为Disable就看
不到它了。

4. Sample queries 栏

UI界面点击左侧边栏的"Sample queries"可以计算一些统计信息

(1) "Show Debug Track" 选项点击后会在trace解析界面显示一个"Debug Slices"条目,可以向里面插入一些我们感性却的片段。例如可以使用如下面SQL脚本将查出的信息显示在"Debug Slices"条目中。

INSERT INTO debug_slices(id, name, ts, dur, depth) SELECT slice.id, '['||thread.name||']'||slice.name, ts,
dur, depth FROM slice JOIN thread_track ON slice.track_id = thread_track.id JOIN thread USING(utid) WHERE
 slice.name = 'dequeueBuffer' order by slice.dur desc limit 100

将Render线程中的dequeueBuffer信息挑出来显示。

(2) "All Processes" 显示trace上的所有进程。

(3) "CPU Time by processes" 每个进程使用的CPU时间。查询结果只有 name 和 time_sec 两个字段。

(4) "Cycles by p-state by CPU" 各个CPU在每个频点上持续的时间。

(5) "Cycles by p-state by CPU" 每个进程的每个线程在每个CPU上获取的时间,但是秒。选top 30的进行显示。

(6) "Debug SQL performance" 里面有很多SQL模板脚本,可以拷贝出来修改使用。

注:在查询结果标签卡上都有查询SQL脚本,可以基于它们实现自己的SQL查询脚本。

5. Navigation 栏

(1) "Record new trace"可以在UI界面进行抓trace。
"Recording settings" 界面中配置Recording mode和要抓取的时长和buffer大小。
"Probes" 下面记录了各个模块的抓取选项,其中"CPU"下的"Syscalls"需要先使能内核中的ftrace节点,否则即使在UI界面使能了也是抓不到相关trace的。
"Recording command" 界面可以看到上面配置生成的配置文件。可以将配置生成文件的差异部分配置到我们工具里面去。

 

三、Perfetto功能介绍

1. 当trace文件大小超过600M时会oops解决
超大 perfetto trace 可以使用 trace_processor 加载,下载官方 trace_processor 命令:

curl -LO https://get.perfetto.dev/trace_processor //Windows下输入链接也可以下载
chmod +x ./trace_processor
./trace_processor --full-sort -D xxx.perfetto-trace

刷新 "https://ui.perfetto.dev/#!/" 网址后会提示本地监测到一个9001的tcp端口的服务,已经加载了 xxx.perfetto-trace 文件,这里只要选yes打开即可。

2. 可以将logcat日志信息抓进perfetto trace里面去。前提是抓perfetto日志的时候把logcat日志给打开了。一个UI线程的横向展示的被称为time line,也即是时间线。在perfetto trace中被称为track,一个个横向的显示称为一个个track。查看trace时当前时间线滚动到哪个位置时就
会将对应位置的logcat日志给显示出来。

 

参考:
Perfetto DOCS:https://perfetto.dev/docs/concepts/buffers //解析后的UI界面点击Document就是它
在命令行上捕获系统跟踪记录:https://developer.android.com/topic/performance/tracing/command-line //这个是 $ python systrace.py ...

 

标签:ftrace,trace,slice,UI,perfetto,SQL,tracer,Perfetto
From: https://www.cnblogs.com/hellokitty2/p/16706229.html

相关文章

  • 一文搞懂 Ftrace 的实现原理
    arm64栈帧结构arm64有31个通用寄存器r0-r30,用法分别如下:寄存器意义SPStackPointer:栈指针r30LinkRegister:在调用函数时候,保存下一条要执行指令的......
  • 一文搞懂 Ftrace 的实现原理
    arm64栈帧结构arm64有31个通用寄存器r0-r30,用法分别如下:寄存器意义SPStackPointer:栈指针r30LinkRegister:在调用函数时候,保存下一条要执行指令的......
  • linux性能工具--ftrace框架
    对于ftrace架构,主要来了解下内核是如何实现的,其主要包括如下内容:ringbuffer的原理和代码分析tracer(function、function_graph、irq_off)原理和代码分析traceevent......
  • 通过route , tracert , traceroute 查看本地路由配置及访问ip或域名时经过的路由信息
    转载请注明出处:1.路由器和交换机的区别和过程在windows 系统或linux 系统访问 外网ip 或域名时,都会通过层层的路由器,然后将请求转发到最终的目标服务器;因为互联......