概述
冷启动分为
-
s0、s1、s2、s3、s4、s5、s6、s7
-
S0:Touch Up → ActivityStart
-
S1:ActivityStart → open camera | start
-
S2:Open camera
-
S3:Open camera | end → Configure streams | start
-
S4:Configure streams
-
S5:Configure streams | end → SetRepeatingRequests
-
S6:SetRepeatingRequests → 1st frame out from hal
-
S7:1st frame out from hal → Display show 1st frame
-
adb shell setprop service.adb.root 1 //开发者模式关闭再打开
-
sched/freq/idle #这三个tag是cpu 信息,无论如何必须带上
-
gfx/view/input #测试列表滑动.桌面滑动.这种流畅性问题
-
gfx/view/imput/hwui #绘图问题
-
gfx/view/input/res/am/wm #测试app启动
-
gfx/view/input/dalvik/disk #GC或者IO导致卡顿
-
gfx/view/input/res/am/wm/power #亮屏,电量相关
-
python systrace.py gfx camera view input sched freq video disk dalvik
res am wm -b 20480 -t 5 -o trace.html
s0+s1
- system+app耗时 搜索关键字ptr:up
-
可以看到如下的内容:这是按下相机按钮并且抬起的操作
-
从 这里开始计时到connectDevice结束是S0+S1的时间.
-
S1的主要时间是activityStart到connectDevice
-
S0: AppLaunch_dispatchPtr:Up --> activityStart
-
S1: activityStart --> connectDevice
s2
- hal耗时 搜索connectDevice
- 可以看到 connectDevice的持续时间.这就是S2的耗时
s3
- app耗时 从下图可以看到是从connectDevice的结尾到 endConfigure的开始
s4
- hal 耗时 endConfigure的持续时间
s5
- app耗时 从endConfigure的结尾到setRepeatingRequest返回完成
s6
-
hal耗时
-
直接搜索first full buffer .有的apk会返回多个.一般都是以最后一个收尾为主.
-
这个一般都是和captureRequest返回在一起的.
-
耗时是从setRepeatingRequest 计算到first full buffer返回
s7
- app和多媒体耗时
冷启动耗时补充:
-
从TouchUp到ActivityStart耗时
-
PostFork 耗时需要排查 Zygote.java 代码
-
Zygote.java frameworks\base\core\java\com\android\internal\os
-
ZygoteInit 耗时需要排查ZygoteInit.java 代码
-
ZygoteInit.java frameworks\base\core\java\com\android\internal\os
-
ActivityThreadMain耗时需要排查ActivityThread.java代码
-
ActivityThread.java frameworks\base\core\java\android\app
-
bindApplication 耗时需要排查ActivityThread.java代码,同上
从ActivityStart到App层OpenCamera耗时
- App开始执行MainActivity一系列onCteate,onStart,onReusme,openCamera等操作
-
Framework层cameraserver开始相应App getCameraCharacteristics、connectDevice等操作。
-
activityStart 耗时需要排查 LaunchActivityItem.java 代码
-
LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction
-
ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码
-
ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction
-
Choreographer#doFrame 耗时需要排查 Choreographer.java 代码
-
Choreographer.java frameworks\base\core\java\android\view
HAL 层 OpenCamera耗时
- HAL 层开始响应 APP OpenCamera的操作,并返回 open状态 给APP。
-
camera_module->open 耗时需要排查hal 层 CameraModule.cpp open 方法中的耗时
-
CameraModule.cpp hardware\interface\camera\common\1.0\default
App层OpenCameraDone到ConfigureStreams
HAL层configureStreams耗时
-
APP 层 ConfigureStreams Done 到 SetRepeatingRequests
-
SetRepeatingRequests 到 第一帧HAL3ProcessCaptureResult
HAL3ProcessCaptureResult 到第一帧Preview
Camera APP冷启动总耗时