和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、抓取Systrace
二、CPU模块知识点
三、input 点击事件处理流程
四、Vsync 事件处理
五、Android 绘制一帧流程分析
六、Camx Trace TAG开启方法
七、参考文献
一、抓取Systrace
1.1 使用手机抓取
使用Google 预留的开发者模式中的 系统跟踪 功能抓取systrace。
步骤:
设置--开发者模式--系统跟踪
trace文件保存路径:
/data/local/traces
手机抓取trace
抓取完之后使用adb 命令 pull 出来即可
C:\Users\ >adb pull /data/local/traces .
/data/local/traces/: 1 file pulled, 0 skipped. 95.1 MB/s (51342186 bytes in 0.515s)
C:\Users\ >
1.2 python 命令抓取
参考命令如下:
python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res
比较麻烦,需要安装环境,不推荐,有成熟脚本除外。
二、CPU模块知识点
2.1 CPU频率,CPU loading 计算
CPU loading 计算公式
CPU 负载loading = Wall duration ÷ 选择CPU 个数÷ 选择CPU的范围
CPU Loading
2.2 Thread 在CPU中的状态
绿色:运行中 Running
对于在CPU上执行的进程,需要查看其运行时间、是否跑在该跑的核上、频率是否够等。浅绿色:可运行 Runnable
对于在等待序列中的进程,需要查看是否有过多任务在等待、等待时间是否过长等。白色:休眠中 Sleeping
这里一般是在等事件驱动。橘色:不可中断的睡眠态_IO_Block Uninterruptible Sleep | WakeKill - Block I/O
线程在I / O上被阻塞或等待磁盘操作完成。紫色:不可中断的睡眠态 Uninterruptible Sleep
线程在另一个内核操作(通常是内存管理)上被阻塞。
举例如下: