1. CPU使用率
CPU执行非系统空闲进程的时间 / CPU总的执行时间
CPU使用率 = (用户态Jiffies + 系统态Jiffies)/总Jiffies
Jiffies代表时间,单位是1/HZ
2. CPU测试方法
adb命令
使用top命令查看哪些进程是 CPU的主要消耗者
adb shell top -h
使用findstr命令获取某个应用的CPU占用率
adb shell top -m 100 -n 1 -d 1 -s cpu | findstr 进程名称(com.xxx.xxx)
显示100进程数,刷新1次,间隔1秒,按cpu使用排序显示
Usage:top[-m max_procs][-n iterations][-d delay][-s sort_column][-t][-h]
-m num Maximum number of processes to display. 最多显示多少个进程
-n num Updates to show before exiting. 刷新次数
-d num Seconds to wait between updates. 刷新间隔时间(默认5秒)
-s col Column to sortby(cpu,vss,rss,thr). 按哪列排序
-t Show threads instead of processes. 显示线程信息而不是进程
-h Display this help screen. 显示帮助文档
top 命令的参数
参数含义
第一行:
Tasks:整体的统计信息
202 total:所有启动的进程数
1 running:正在运行的进程数
201 sleeping: 挂起的进程数
0 stoped: 停止的进程数
0 zombie:僵尸进程数
第二行:
Mem:内存统计信息
物理内存总数
已使用的物理内存
空闲物理内存
内核缓存内存量
第三行:
Swap:虚拟内存统计信息
交换区总量
已使用交互区总量
空闲交换区总量
缓冲的交换区总量
第四行:
%cpu:用户空间占用CPU百分比
%user:处于用户态的运行时间,不包含优先值为负进程
%nice: 内核空间占用CPU百分比
%sys:用户空间内改变优先级的进程占用CPU百分比
%idle:空闲CPU百分比
%iow:等待输入输出CPU时间百分比
%irq:CPU服务于硬件中断所耗费的时间总额
%sirq:CPU服务软件中断所耗费的时间总额
%host: Steal Time
实际内存计算: free + (buffers + cached)
程序已用内存数:used – (buffers + cached)
还有:
User:处于用户态的运行时间,不包含优先值为负进程
Nice:优先值为负的进程所占用的cpu时间
Sys:处于核心态的运行时间
idle:除IO等待时间以外的其他等待时间
iow:IO等待时间
irq:硬件中断时间
PID:进程ID
USER:进程所有者
PR:优先级
NI:nice值,实时进程的nice值为0,普通进程的nice值范围为-20~19
VIRT:虚拟内存 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:常驻内存 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:共享内存 单位kb
S:进程状态 (D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
%CPU: 上次更新到现在的CPU时间占用百分比
%MEM: 进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
ARGS:进程参数信息