导语
在最近一次游戏性能专项测试过程中发现帧率陡降,开发同学分析源代码堆栈信息,折腾了很久一直无法定位原因,最终定位到原来是手机发热降频引起。
有经验一看完整的性能数据,基本一眼都能看出问题原因。需要强调一点:分析问题需要整体数据联动分析,单独看某单一信息是没是意义的。这个案例很典型,所以将本次性能实战经验分析出来,希望对测试或者开发同学有些帮助。
一月一度的游戏性能专项回归测试过程中,我们再Galaxy S9 Plus手机上测试发现,帧率出现陡降问题,非常有规律的:进入游戏玩一段时间帧率FPS出现缓慢降低,从50帧降低到十几帧,然后一直持续低帧率,低帧率情况下Jank卡顿明显增加,具体如PerfDog客户端截图:
对应web截图(web图表信息看的会更直接些)如下:
开发同学还以为是游戏代码问题,打印堆栈信息也没看出什么问题,CPU利用率15%左右,总利用率40%左右都很正常,问题是陡降过程中,CPU利用率也无变化。如图:
排除了CPU的原因,那是否是内存memory出现泄漏,导致内存不够用以至于出现内存swap置换问题被?但通过数据看,500-600MB左右也很正常。如图:
CPU和内存都没有问题,游戏的渲染画面,相对来说GPU可能出现瓶颈,逐对GPU进行查看,发现帧率陡降过程中GPU利用率从80%-40%左右,说明GPU不是性能瓶颈点,GPU降为40%这个如何理解?是由于帧率降低了,渲染东西变少了,自然利用率降低。
很容易想到的点都分析到,都没发现说明问题。在测试过程中发现手机发热厉害,会不会与温度有关?如图:
实际测试发现,发现温度竟然高达70度了,这是要煮鸡蛋的节奏?凭对CPU硬件感知,觉得可能是高温引起CPU降频。马上查看CPU Freq频率信息,如图:
图片发现帧率从47帧讲到16.9帧,频率从1700+2800降低到576+825。验证了确实是降频引起帧率降低,顿开茅塞的感觉。这次问题也得以解决。
PerfDog专家课堂划重点:
手机硬件温控系统,为什么需要温控?
因为:手机高频运行类似发动机一样,产生极大能耗热量,高频随着运行时间,温度会持续增加,若不加控制,会不会上几百度?会烧毁CPU芯片,所以硬件需要温度控制,如何控制?唯有降低CPU频率,当温度超过一定阈值,就会触发温控降频机制。不同手机厂商温度阈值不一样,有些手机50度就会降频,有些手机65度才会降频,之前测试过小米5,好像不到50度就会降频,对温度及其敏感。
PerfDog是专注于移动性能测试分析的平台,能够提供很多性能数据,每一项数据都很有意义和价值。但是在分析问题过程中,需要多数据一起联动分析,可能会发现意想不到的效果。