1.1初步分析步骤
(1)从trace上查看整体掉帧和卡顿情况,及CPU频率是否正常
(2)确认测试手法是否对其(测试机和对比机是否均为高负载或非高负载,是否静置)
(3)测试机和对比机的测试主观感受评价
(4)确认log和trace的有效性
1.2详细分析
(1)查看整体的出帧情况和surfaceflinger情况,并确认频率是多少HZ(确认出帧间隔时间),通过查看稳定下的VSYNC-app块确认该游戏的FPS的HZ,或者随机截取稳定出帧的间隔时间进行计算
(2)根据提供的报告展示的严重掉帧卡顿点,在trace上找到对应的surfaceflinger的Acturaltime,对照surfaceflinger和游戏出帧线程(queuebuffer和dequeuebuffer)及其主线程的running情况,确认掉帧,并对其报告上的CPU频率、CPU比率和机身温度
(3)查看surfaceflinger和vsync时间跨度并确认bufferTX块的消耗情况
(4)若bufferTX块的消耗正常,确认是否有该游戏的其他子线程在该掉帧处running
(5)若无其他子线程在掉帧处running情况则需要确认GPU competition的时间长短,查看HWC是否耗时长,查看是否与GPU相关
(6)确认掉帧处CPU是否异常,如抢占大核现象,应用主线程跑小核,调度异常
(7)确认是否存在GC回收情况,并确认是否是app内部正常GC内存回收
(8)掉帧处是否存在running超时情况,且主线程跑在CPU大核,此时CPU bound
(9)掉帧处查看是否存在IO问题,一般IO在场景切换时较多,需要与测试确认测试过程中是否存在场景切换的掉帧,若IO Block较多需要抓IO trace分析,否则场景切换的IO问题只需给结论无法分析即可澄清
(10)长时间sleep状态,需要确认应用主线程在等待什么线程,是否枪大核
(11)GPU确认需要从log中查看GPU的频率是否最大