2024年10月31日 第37讲 Perfetto 自动化之Trace Processor中的Track与Event 极客笔记
本讲是Android Camera性能分析专题的第37讲,我们介绍Perfetto 自动化之Trace Processor中的Track与Event。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
执行如下语句
SELECT name from sqlite_master
示例输出:
可以把Perfetto UI显示的一行看作是一个Track,包括:
比如下图是一个process_track
SELECT type from track group by type
示例输出:
可以把Trace理解为带时间戳的Event的集合,有两种类型的Event:
Slices
Counters
Event分为Slice和Counter两种
Event和Track表又通过其他表建立的连接:
查看某个Event所在的进程/线程名:
步骤
Step1: 根据Slice和Track表找到’frame capture’的track.type为process_track
SELECT track.id, track.type
FROM slice
JOIN track ON track.id = slice.track_id
WHERE slice.name = 'frame capture' group by track.type
输出:
Step2和Step3:结合process_track和process表找到进程名和进程pid
SELECT process.pid, process.name
FROM process
JOIN process_track ON process_track.upid = process.upid
WHERE process_tack.id = 54
输出:
Step2和Step3也可以用USING语句写成(当两个要关联表的字段名是一样的,我们可以使用 USING, 可减少 SQL 语句的长度,JOIN USING简化了JOIN ON)
SELECT process.pid, process.name
FROM slice
JOIN process_track ON slice.track_id = process_track.id
JOIN process USING(upid)
WHERE slice.name = 'frame capture'
GROUP BY process.name
输出:
Step1:根据Slice和Track表找到’sendRequestsBatch’的track.type为thread_track
Step2和Step3:结合thread_track和thread表找到线程名和线程tid
Step2和Step3也可以用USING写成如下的语句:
Step1:根据counters和Track表找到’cam2_frame’的track.type为process_counter_track
Step2和Step3:结合process_counter_track和process表找到进程名和进程pid
Step2和Step3也可以用USING写成如下的语句
本文链接:http://so.lmcjl.com/news/16651/