一、分析trace,计算帧率
1、进入Perfetto里,打开抓取到的trace文件,工具会自动解析文件
2、帧率的计算,可以用Render_service为标准计算:抓取到的trace的函数渲染必须为连续的,才可以准确的计算出帧率。如果不是连续的,则需要剔除。
如下图所示的帧率= 269 / 5 = 53.8
10s内的帧数:要尽量保持10秒内,渲染的充分,避免人为操作影响到帧数缺失太多。
3、测试过程中,由于人为因素误差较大,所以要尽可能多次测量,测量5次,提出明显偏差较大的数据,计算平均值。这样可以弥补掉认为操作的偶然性误差。
图中空白:1、可能是没有操作;2、可能出现卡顿;如果是没有操作的空白不需要计算在内,如果连续操作了因为卡顿出现空白,需要计算在内;
二、根据trace分析,找到调优方向:
1、抓trace,方法见上文;
2、打开分析工具,导入trace文件;(分析工具地址:2024071874448.ftrace (72 MB) - Perfetto UI)
3、查看设备进程,找到测试的进程id,再在文中找到此进程id,查看三个进程数据;
注:
A、查看设备进程命令:ps -ef 或 ps -ef | grep 待过滤名称。
B、进程看你滑动的页面,例如桌面是launcher,设置里滑动测试的时settings;
4、分析三个数据:(将鼠标悬停在数据上,按住ctrl 同时滚动鼠标滚轮,可以对数据进行缩放)
以settings为例:
A、数据一: m.ohos.settings
打开第一个进程,对进程进行放大,然后点击该进程子项 m.ohos.settings 的第一个数据流(见图中箭头),然后看下方duration;
B、 数据二: RSRender Thread
打开第一个进程,对进程进行放大,然后点击该进程子项 RSRender Thread 的第一个数据流(见图中箭头),然后看下方duration;
C、进程三:render_service
打开第二个进程,对进程进行放大,然后点击该进程子项 render_service 的第一个数据流(见图中箭头),然后看下方duration;
5、发现问题:当三个数据的duration时间均小于 16ms时,设备帧率可达到60左右。
6、调优方向:分别对 m.ohos.settings、RSRender Thread、render_service 进行调优。
注:调优方向:应用层、系统层(去掉冗余日志、更换 vendor/lib64 库(ls /vendor/lib64 | grep display)等)