Android ADB shell命令
Android ADB shell命令
如何利用ADB查询app的性能数据
一、内存
在Android系统中,每个APP内存包括两部分:
与其他进程共享内存(shared drity)
APP独占的私有内存(private dirty)
在行业内,我们通常会使用PSS(USS+共享的内存)来判断APP的内存开销
查看指令为:adb shell dumpsys meminfo 应用包名或者 adb shell procrank
二、CPU
CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。
静态不超过5%,后台静默不超过1%,一般运行状态不超过30%,高负荷运行不超过75%,峰值不超过90%。
2.1 获取指定应用的CPU占用情况
adb shell dumpsys cpuinfo | grep packagename
可以看出第一行CPU 占用率 4.9%,这个过程是在用户(user)中花 1.5% 的时间,并在内核空间(kernel)花费 3.4% 的时间
2.2 获取实时的连续数据
adb shell top -d 1
-t 显示进程名称
-s 按指定行排序
-n 在退出前刷新几次
-d 刷新间隔 「-d 1」每隔1s获取cpu占用
-m 显示最大数量
运行效果
2.3cpu运行的枚举场景
2.3.1 空闲状态下的应用CPU消耗情况(程序运行后按home键挂后台)
在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
预期应用对应的CPU占用率=0%
2.3.2 中等规格状态下的应用CPU消耗情况(程序执行普通操作时的cpu占用)
在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
预期应用对应的CPU占用率≤30%
2.3.3 中等规格状态下长时间的应用CPU消耗情况
预期应用对应的CPU占用率≤30%
2.3.4 满规格状态下的应用CPU消耗情况
在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)
预期应用对应的CPU占用率≤50%
2.3.5 针对性的场景测试
2.4 问题排查
我们在面对问题如:APP操作时出现发烫、卡顿、ANR现象,排查是否是CPU问题时:
如果是ANR,则在logcat文件里搜索ANR in,以及adb pull 拉取trace文件
如果没有ANR则使用上述方法获取到CPU占用率,如果某个场景CPU占用率走势异常,峰值存在异常均值大于基线,则可以使用traceview查看分析Trace文件,反馈给RD解决