客户使用的是Android作为TV系统,加载客户的系统后,发现开机启动要近80s,而Android公版软件只需要40s左右,当时进行了如下调试:

1: 开机后使用 logcat -v time 来抓取日志,查看是否有某些进程卡顿。

分析日志,发现时间都比较连贯,没有明显的阻塞,或者耗时长的操作,特别查看了surfaceflinger 进程,它的时间顺序也没有问题。

 

2:  开机过程中使用 查看 CPU和内存的消耗。

内存消耗合理,且日志里面,也没有出现过多的虚拟机释放内存的信息。 cpu消耗较公版略高,但是也没有跑到100%之类的极限情况,基本合理。 

 

3:  开机启动日志中,有大量的网络请求,让客户提供一版“无网络请求服务”的软件。

开机时间无明显变化。

 

4:  重点查看日志中的crash信息和虚拟机释放内存的信息。

同公版软件查不多,无明显可疑的地方。

 

5:  调整系统的内存配置。

开机时间无明显变化

 

到这个时候,其实已经没什么好办法了, 感觉surfaceflinger进程工作很正常,就是迟迟不发命令让开机动画退出,我尝试着直接手动杀掉开机动画进程,结果,开机速度明显正常了。大喜,直接删除掉开机动画,结果开机启动正常。

开机启动慢的原因是: 客户的开机动画,用的全是高清图片,开机动画是用opengl来贴图的,是软件算法,没有硬件加速,导致,它特别消耗CPU,把整个系统都拖慢了。通过top查看cpu利用率,不容易看出这种变化。 最后的解决办法是让他们优化了图片,做了一个简洁的开机动画。
用户评论:
发表评论: (限500字)

注册 忘记密码 登录