获取Android App cpu占用率一般有两种方式,一个是用dumpsys cpuinfo,另一个是top

1、dumpsys cpuinfo命令

Android提供的dumpsys工具可以用于查看系统服务信息与状态,dumpsys cpuinfo可以用来查看安卓系统当前的cpu使用情况。

adb shell dumpsys cpuinfo

Load: 14.13 / 14.13 / 14.13

CPU usage from 70984ms to 10984ms ago:

1.1% 2635/com.android.browser: 0.7% user + 0.3% kernel / faults: 1 minor

0.8% 247/surfaceflinger: 0.2% user + 0.6% kernel

0.4% 796/system_server: 0.3% user + 0.1% kernel

0.1% 915/com.android.systemui: 0% user + 0% kernel / faults: 30 minor

0.1% 156/bat_thread_kthr: 0% user + 0.1% kernel

0% 1660/com.tencent.mobileqq:MSF: 0% user + 0% kernel / faults: 37 minor

0% 3683/com.tencent.mobileqq: 0% user + 0% kernel

0% 3766/com.android.keyguard: 0% user + 0% kernel / faults: 47 minor

0% 59/hps_main: 0% user + 0% kernel

0% 931/tx_thread: 0% user + 0% kernel

0% 6080/com.oppo.market: 0% user + 0% kernel / faults: 12 minor

0% 233/healthd: 0% user + 0% kernel

0% 285/adbd: 0% user + 0% kernel

0% 744/gsm0710muxd: 0% user + 0% kernel

0% 5270/kworker/u17:2: 0% user + 0% kernel

0% 6556/com.nearme.gamecenter:dcs: 0% user + 0% kernel / faults: 1 minor

0% 3/ksoftirqd/0: 0% user + 0% kernel

0% 53/cfinteractive: 0% user + 0% kernel

0% 89/btif_rxd: 0% user + 0% kernel

0% 131/display_esd_che: 0% user + 0% kernel

0% 284/em_svr: 0% user + 0% kernel

0% 298/mtk_wmtd: 0% user + 0% kernel

0% 738/kworker/u17:3: 0% user + 0% kernel

0% 1073/com.android.phone: 0% user + 0% kernel / faults: 17 minor

0% 1146/com.oppo.launcher: 0% user + 0% kernel / faults: 14 minor

0% 6132/com.oppo.market:dcs: 0% user + 0% kernel / faults: 3 minor

0% 6527/com.nearme.gamecenter: 0% user + 0% kernel / faults: 3 minor

0% 6911/kworker/0:2: 0% user + 0% kernel

+0% 6947/kworker/0:0: 0% user + 0% kernel

3% TOTAL: 1.6% user + 1.3% kernel

1)参数解释

第一行显示的是cpuload (负载平均值)信息:Load: 14.13 / 14.13 / 14.13

这三个数字表示逐渐变长的时间段(平均一分钟,五分钟和十五分钟)的平均值,而较低的数字则更好。数字越大表示问题或机器过载。

user 和 kernel分别代表用户和系统内核分别占用的cpu比率

user(用户态): 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取

kernel(内核态): CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序

2)为什么要有用户态和内核态

由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态 和 内核态

3)应用cpu占用率

如果想要具体查看某个App的cpu占用率,可以用命令

adb shell "dumpsys cpuinfo | grep packagename"

以Android自带浏览器为例,命令为

adb shell "dumpsys cpuinfo | grep com.android.browser"

 

2、top

使用命令top-m 10 -s cpu(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

参数含义:

PID:progressidentification,应用程序ID

S: 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

#THR:程序当前所用的线程数

VSS:VirtualSet Size虚拟耗用内存(包含共享库占用的内存)

RSS: ResidentSet Size实际使用物理内存(包含共享库占用的内存)

UID:UserIdentification,用户身份ID

Name:应用程序名称

如果你想筛选出你自己的应用的话可以用下面命令
top -d 3| greppackageName

 

3、总结

个人理解:cpuinfo因为是取一段时间的平均值,而total也是取这段时间的平均值,而非所有进程的平均值之和,所以两者存在一定差异

1、dumpsys cpuinfo可以用于日常App自动化性能监控、巡检

2、top命令可以查看瞬时的cpu占用率,在性能的故障分析调优时可能会更有用

 

 

 

转存失败重新上传取消正在上传…重新上传取消正在上传…重新上传取消

 

更多相关文章

  1. android adb录屏命令
  2. android 屏幕录制-screenrecord
  3. 修改Android手机的“虚拟机堆大小”和android:largeHeap来防止AP
  4. MemoryHeapBase与MemoryBase
  5. Android(安卓)通过initrc控制命令、服务启动时间
  6. android系统提供的常用命令行工具
  7. 搭建Android驱动开发环境
  8. win7 cmd终端连接android手机运行adb shell脚本命令
  9. Android手机开发ubuntu系统中常用的搜索命令

随机推荐

  1. Android笔记Android基于事件监听器处理机
  2. .NET 开源了,Visual Studio 开始支持 Andr
  3. Android(安卓)gitHub 开源
  4. 开发前奏曲之添加Android(安卓)SDK平台工
  5. Android(安卓)amr语音编解码解惑
  6. Android中app的请求抓包工具 Fiddler 详
  7. Android(安卓)-- BroadcastReceiver的使
  8. 使用React Native开发Android手持机
  9. Android核心功能模块介绍
  10. 浅析Android线程模型