Files
mkdocs/docs/学习笔记/perfetto看trace关键词.md
2026-02-11 00:57:50 +08:00

14 KiB
Raw Permalink Blame History

Perfetto看Trace关键词

一、应用启动相关关键词

1. 进程创建

关键词 说明 位置
startProcess 进程启动 SystemServer/ActivityManagerService
ActivityManager: startProcess ActivityManager启动进程 SystemServer
Zygote: forkAndSpecialize Zygote进程fork Zygote进程
Process: start 进程启动 SystemServer
task_newtask 新任务创建 Kernel
task_rename 任务重命名 Kernel

2. Application初始化

关键词 说明 位置
handleBindApplication 绑定Application 应用主线程
ActivityThread: handleBindApplication ActivityThread处理绑定 应用主线程
Application.onCreate Application初始化 应用主线程
attachBaseContext 附加基础上下文 应用主线程
installContentProviders 安装ContentProvider 应用主线程

3. Activity创建

关键词 说明 位置
performLaunchActivity 执行启动Activity 应用主线程
ActivityThread: performLaunchActivity ActivityThread启动Activity 应用主线程
Activity.onCreate Activity创建 应用主线程
Activity.onStart Activity启动 应用主线程
Activity.onResume Activity恢复 应用主线程
onWindowFocusChanged 窗口焦点变化 应用主线程

4. 首帧渲染

关键词 说明 位置
Choreographer#doFrame 帧调度 应用主线程
onMessageReceived 消息接收 SurfaceFlinger
SurfaceFlinger: onMessageReceived SurfaceFlinger接收消息 SurfaceFlinger
firstFrame 首帧 SurfaceFlinger
Displayed 显示完成 应用主线程

二、渲染相关关键词

1. 帧调度

关键词 说明 位置
Choreographer#doFrame 帧调度 应用主线程
doFrame 执行帧 应用主线程
doCallbacks 执行回调 应用主线程
doAnimationFrame 执行动画帧 应用主线程
doTraversal 执行遍历 应用主线程

2. 视图系统

关键词 说明 位置
performTraversals 执行遍历 应用主线程
performMeasure 执行测量 应用主线程
performLayout 执行布局 应用主线程
performDraw 执行绘制 应用主线程
onMeasure 测量 应用主线程
onLayout 布局 应用主线程
onDraw 绘制 应用主线程
invalidate 失效 应用主线程
requestLayout 请求布局 应用主线程

3. RenderThread

关键词 说明 位置
drawFrame 绘制帧 RenderThread
dequeueBuffer 获取Buffer RenderThread
queueBuffer 提交Buffer RenderThread
syncAndDrawFrame 同步并绘制帧 RenderThread
flush 刷新 RenderThread
flushCommands 刷新命令 RenderThread

4. SurfaceFlinger

关键词 说明 位置
onMessageReceived 接收消息 SurfaceFlinger
onFrameAvailable 帧可用 SurfaceFlinger
doComposition 执行合成 SurfaceFlinger
doComposeSurfaces 合成表面 SurfaceFlinger
postComposition 后合成 SurfaceFlinger
VSync 垂直同步 SurfaceFlinger
onVSync VSync事件 SurfaceFlinger

5. GPU相关

关键词 说明 位置
gpu_mem_total GPU内存总量 Kernel
mali_gpu_total Mali GPU总量 Kernel
gpu_freq GPU频率 Kernel
gpu_utilization GPU使用率 Kernel

三、系统服务相关关键词

1. ActivityManager

关键词 说明 位置
ActivityManager: startActivity 启动Activity SystemServer
ActivityManager: startService 启动Service SystemServer
ActivityManager: bindService 绑定Service SystemServer
ActivityManager: startProcess 启动进程 SystemServer
ActivityManager: finishActivity 结束Activity SystemServer
ActivityManager: pauseActivity 暂停Activity SystemServer
ActivityManager: resumeActivity 恢复Activity SystemServer

2. WindowManager

关键词 说明 位置
WindowManager: addWindow 添加窗口 SystemServer
WindowManager: removeWindow 移除窗口 SystemServer
WindowManager: relayoutWindow 重新布局窗口 SystemServer
WindowManager: setAppVisibility 设置应用可见性 SystemServer
WindowManager: setInputMethodWindow 设置输入法窗口 SystemServer

3. Input系统

关键词 说明 位置
InputReader 输入读取器 Input进程
InputDispatcher 输入分发器 Input进程
dispatchKey 分发按键 Input进程
dispatchMotion 分发触摸 Input进程
touch 触摸事件 Input进程
key 按键事件 Input进程

4. Binder通信

关键词 说明 位置
binder_transaction Binder事务 Kernel
binder_transaction_received 接收Binder事务 Kernel
binder_lock Binder锁 Kernel
binder_unlock Binder解锁 Kernel
binder_wait_for_work 等待Binder工作 Kernel

四、进程和线程相关关键词

1. 进程名称

关键词 说明
system_server 系统服务进程
surfaceflinger SurfaceFlinger进程
zygote Zygote进程
zygote64 64位Zygote进程
input 输入服务进程
logd 日志守护进程
lmkd 低内存杀手进程

2. 线程名称

关键词 说明 位置
main 主线程 应用进程
RenderThread 渲染线程 应用进程
android.anim.if 动画线程 SystemServer
android.ui UI线程 SystemServer
android.display 显示线程 SystemServer
HeapTaskDaemon 堆任务守护线程 应用进程
FinalizerDaemon 终结器守护线程 应用进程
ReferenceQueueDaemon 引用队列守护线程 应用进程

五、性能指标相关关键词

1. CPU相关

关键词 说明 位置
cpu_frequency CPU频率 Kernel
cpu_idle CPU空闲 Kernel
cpu_freq CPU频率 Kernel
sched_switch 任务切换 Kernel
sched_waking 任务唤醒 Kernel
sched_migrate_task 任务迁移 Kernel
sched_process_exit 进程退出 Kernel
sched_process_free 进程释放 Kernel

2. 内存相关

关键词 说明 位置
GC 垃圾回收 应用进程
HeapTaskDaemon 堆任务守护线程 应用进程
ConcurrentGC 并发GC 应用进程
Alloc 内存分配 应用进程
Free 内存释放 应用进程
kmalloc 内核内存分配 Kernel
kfree 内核内存释放 Kernel
kswapd 交换守护进程 Kernel
memreclaim 内存回收 Kernel

3. I/O相关

关键词 说明 位置
android_fs_dataread_start 数据读取开始 Kernel
android_fs_dataread_end 数据读取结束 Kernel
android_fs_datawrite_start 数据写入开始 Kernel
android_fs_datawrite_end 数据写入结束 Kernel
block_rq_issue 块请求发出 Kernel
block_rq_complete 块请求完成 Kernel

4. 网络相关

关键词 说明 位置
net_dev_xmit 网络设备发送 Kernel
net_dev_recv 网络设备接收 Kernel
tcp_send TCP发送 Kernel
tcp_receive TCP接收 Kernel

六、SQL查询常用关键词

1. 表名

表名 说明
slice 时间片表包含所有Trace事件
sched 调度表包含CPU调度信息
thread 线程表,包含线程信息
process 进程表,包含进程信息
counter 计数器表,包含性能计数器
track 轨道表包含Trace轨道信息

2. 常用字段

字段 说明
ts 时间戳(纳秒) slice, sched
dur 持续时间(纳秒) slice
name 事件名称 slice
utid 线程ID slice, sched
upid 进程ID slice, sched
cpu CPU核心 sched
state 线程状态 sched
value 计数器值 counter

3. 常用查询模式

查询掉帧

SELECT * FROM slice 
WHERE name = 'Choreographer#doFrame' 
AND dur > 16666667;

查询主线程耗时操作

SELECT name, dur / 1000000.0 AS duration_ms
FROM slice 
WHERE utid = (SELECT utid FROM thread WHERE name LIKE '%main%' LIMIT 1)
ORDER BY dur DESC
LIMIT 20;

查询CPU使用率

SELECT cpu, COUNT(*) AS usage
FROM sched 
WHERE ts BETWEEN ? AND ?
GROUP BY cpu;

七、常见问题定位关键词

1. 卡顿问题

关键词 说明 用途
Choreographer#doFrame 帧调度 查找掉帧
performTraversals 视图遍历 查找布局耗时
drawFrame 绘制帧 查找渲染耗时
dequeueBuffer 获取Buffer 查找Buffer分配问题
queueBuffer 提交Buffer 查找Buffer提交问题

2. 启动问题

关键词 说明 用途
startProcess 启动进程 查找进程创建耗时
handleBindApplication 绑定Application 查找Application初始化耗时
performLaunchActivity 启动Activity 查找Activity创建耗时
onCreate 创建 查找创建耗时

3. 内存问题

关键词 说明 用途
GC 垃圾回收 查找GC频率和耗时
HeapTaskDaemon 堆任务守护线程 查找GC活动
Alloc 内存分配 查找内存分配模式
kswapd 交换守护进程 查找内存压力

4. CPU问题

关键词 说明 用途
cpu_frequency CPU频率 查找频率问题
sched_switch 任务切换 查找调度问题
sched_waking 任务唤醒 查找唤醒延迟

八、搜索技巧

1. 精确搜索

  • 完整匹配:直接输入关键词,如 Choreographer#doFrame
  • 部分匹配:使用通配符,如 onCreate 可以匹配所有onCreate方法
  • 正则表达式:在搜索框中使用正则,如 .*onCreate.*

2. 组合搜索

  • 多关键词:使用空格分隔,如 onCreate Activity
  • 排除关键词:使用 - 排除,如 onCreate -Application
  • 时间范围:结合时间选择,缩小搜索范围

3. 常用搜索模式

启动相关

startProcess
handleBindApplication
performLaunchActivity
onCreate

渲染相关

Choreographer#doFrame
performTraversals
drawFrame
dequeueBuffer
queueBuffer

内存相关

GC
HeapTaskDaemon
Alloc
kswapd

CPU相关

cpu_frequency
sched_switch
sched_waking

九、快速定位技巧

1. 使用书签

  • 标记关键点:按 M 键标记当前位置
  • 跳转书签:按 G 键跳转到书签
  • 管理书签:在书签列表中管理

2. 使用时间选择

  • 选择时间范围Shift + 鼠标拖拽
  • 缩放时间W 放大,S 缩小
  • 平移时间A 左移,D 右移

3. 使用筛选器

  • 进程筛选:只显示特定进程
  • 线程筛选:只显示特定线程
  • 事件筛选:只显示特定事件

4. 使用SQL查询

  • 快速统计使用SQL查询快速获取统计数据
  • 复杂分析使用SQL进行复杂的数据分析
  • 导出数据使用SQL查询结果导出数据

十、关键词速查表

启动流程关键词

startProcess → handleBindApplication → performLaunchActivity → 
onCreate → onStart → onResume → Choreographer#doFrame

渲染流程关键词

Choreographer#doFrame → performTraversals → performMeasure → 
performLayout → performDraw → drawFrame → dequeueBuffer → 
queueBuffer → onMessageReceived

内存回收关键词

GC → HeapTaskDaemon → ConcurrentGC → Alloc → Free → kswapd

CPU调度关键词

sched_switch → sched_waking → cpu_frequency → cpu_idle

十一、实际应用示例

示例1查找启动耗时

搜索关键词:

startProcess
handleBindApplication
performLaunchActivity
Choreographer#doFrame

分析步骤:

  1. 搜索 startProcess,找到进程启动时间
  2. 搜索 handleBindApplication找到Application初始化时间
  3. 搜索 performLaunchActivity找到Activity创建时间
  4. 搜索 Choreographer#doFrame,找到首帧时间
  5. 计算各阶段耗时

示例2查找卡顿原因

搜索关键词:

Choreographer#doFrame
performTraversals
drawFrame
dequeueBuffer
queueBuffer

分析步骤:

  1. 搜索 Choreographer#doFrame,找到掉帧
  2. 查看该帧的 performTraversals 耗时
  3. 查看 drawFrame 耗时
  4. 查看 dequeueBufferqueueBuffer 耗时
  5. 定位瓶颈

示例3查找内存问题

搜索关键词:

GC
HeapTaskDaemon
Alloc
kswapd

分析步骤:

  1. 搜索 GC查看GC频率
  2. 搜索 HeapTaskDaemon查看GC线程活动
  3. 搜索 Alloc,查看内存分配模式
  4. 搜索 kswapd,查看内存压力

十二、总结

关键词分类

  1. 启动相关进程创建、Application初始化、Activity创建、首帧渲染
  2. 渲染相关帧调度、视图系统、RenderThread、SurfaceFlinger、GPU
  3. 系统服务ActivityManager、WindowManager、Input、Binder
  4. 进程线程:进程名称、线程名称
  5. 性能指标CPU、内存、I/O、网络
  6. SQL查询:表名、字段、查询模式

使用建议

  1. 建立关键词库:根据常用场景建立关键词库
  2. 快速定位:使用关键词快速定位问题
  3. 组合使用结合搜索、筛选、SQL查询等多种方式
  4. 持续积累:在实际使用中不断积累新的关键词

最后更新2024年