手机反应速度变慢

初步分析

  • 首先怀疑是CPU暂用率过高导致的
adb shell dumpsys cpuinfo

device_been_to_slowly01

感觉不像是CPU过高导致的,感觉像是IO

  • 其次怀疑是IO导致的

所以用iotop来看,一些问题.

查看PID,明显是百度地图:
device_been_to_slowly02

但是,目前没有查询到 到底是哪个线程读写哪个设备???
待查….

  • systrace 查看问题

device_been_to_slowly03

device_been_to_slowly04

目前来看感觉像是一个死循环

APP层的Trace 源头 Choreographer#doFrame

device_been_to_slowly05

代码在Choreographer.java里面,所以,先假设是View控件出现了问题,可以用git 来查看相关文件的修改.

device_been_to_slowly06

gitk core/java/android/view/

发现一个问题
device_been_to_slowly07

关键字: ThreadedRender.java 这个比较敏感.

而且,函数里面有返回一个false. 猜测可能是返回false导致的一个死循环.

其中关键字:
persist.sys.force_sw_gles

查找这个关键字,相关的地方,并且做一个开关控制.

后面待续…

top 分析

kswap 和 mmcqd 占比过高
91 root 20 0 0 0 0 S 30.0 0.0 6:58.13 [kswapd0]
232 root 20 0 0 0 0 S 16.6 0.0 4:24.71 [mmcqd/0]