测试基础 通过 adb 命令获取手机应用性能数据 (CPU、内存、流量)

蔡瑞淳 for 君海游戏QA · 2018年05月25日 · 最后由 lshunger 回复于 2022年03月03日 · 9006 次阅读

由于工作需要获取安卓手机游戏应用运行时的性能数据,上网学习了一些知识,整理记录下。。。

若有错误,欢迎指正;若有更好方法,感谢分享。

1. 获取 CPU 数据

命令:adb shell top -n -1 | find "package 信息"
执行:

2. 获取内存数据

(1)手机总内存

命令:adb shell cat /proc/meminfo |findstr MemTotal
执行:

(2)运行内存

① 基本内存耗用分类:

● VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
● RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
● PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
● USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
说明:
a.一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
b.实际在统计查看某个进程内存占用情况的时候,看 PSS 是比较客观的

② 获取 VSS 和 RSS:

命令:adb shell top -n 1 |findstr "packageinfo"
执行:

③ 获取 PSS

命令:adb shell dumpsys meminfo pakagename
执行:

④ 获取 VSS、RSS、PSS、USS

命令:adb shell procrank(需要手机 root 权限)

3. 获取应用流量

(1)方法 1

命令:
adb shell ps | grep 'com..xxx.union' | awk '{print $2}' //获取 pid,下个命令要用到
adb shell cat /proc/pid/status | grep Uid | awk '{print $2}' //获取 uid,下个命令要用到
adb shell cat /proc/uid_stat/uid/tcp_snd //获取 tcp_snd 流量数据
adb shell cat /proc/uid_stat/uid/tcp_rcv //获取 tcp_rcv 流量数据
执行:

(2)方法 2

命令:adb shell cat /proc/13478/net/dev//获取流量数据
执行:

共收到 3 条回复 时间 点赞

我使用了楼主获取流量的方式,但是通过实践证明,我自己新建一个 app,里面没有网络的请求,查看/net/dev 文件,流量还是会增加,所以觉得此方法统计的数据不准确

陌路微凉 回复

因为这个方法得到的网卡流量数据,不是进程流量数据

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册