一、CPU使用率原理
android系统内核是基于linux,在linux系统下 CPU 利用率分为用户态、系统态、空闲态
用户态:表示CPU处于用户态执行的时间
系统态:系统内核执行的时间
空闲态:空闲系统进程执行的时间
CPU利用率=CPU执行非系统空闲进程的时间/CPU总的执行时间。这里的时间含义如下:
HZ: Linux 核心每隔固定周期会发出 timer interrupt(时钟中断),HZ是用来定义每一秒有几次时钟中断。例如 HZ 为1000,就代表每秒有1000 次时钟中断。
Jiffies: 在Linux的内核中,有一个全局变量:Jiffies。Jiffies代表时间。它的单位随硬件平台的不同而不同。Jiffies的单位就是1/HZ
Intel 平台Jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔。每个CPU时间片,Jiffies都要加1
CPU利用率计算公式:CPU利用率=(用户态Jiffies + 系统态 Jiffies)/ 总Jiffies
二、CPU测试方法
使用top命令查看哪些进程是CPU的主要消耗者
>adb shell
>top --help
-m 最多显示多少个进程
-n 刷新次数
-d 刷新间隔时间(默认5秒)
-s 按哪列排序
-
adb shell top命令
> adb shell top
第一组数据的含义:
400%cpu: CPU总量
33%user: 用户空间占用CPU的百分比
0%nice: 改变过优先级的进程占用cpu的百分比
30%sys 内核空间占用cpu的百分比
337%idle 空闲cpu百分比
0%iow IO等待占用cpu的百分比
0%irq 硬中断(Hardware IRQ)占用cpu的百分比
0%sirq 软中(Software Interrupts)占用CPU的百分比
第二组数据的含义:
PID 进程id
USER: 进程所有者
PR:进程优先级
NI: nice值。负值表示高优先级,正值表示低优先级
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秒
adb shell dumpsys cpuinfo [pkg or pid]
该程序占用20%,其中9.8%是user,10%是kernel(内核)
查看单个应用的cpu占用情况:
————————————————
版权声明:本文为CSDN博主「shines_m」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38571773/article/details/126927597