來(lái)自:https://www.cnblogs.com/yomia/p/15499031.html
一、CPU使用率原理
android系統(tǒng)內(nèi)核是基于linux,在linux系統(tǒng)下 CPU 利用率分為用戶(hù)態(tài)、系統(tǒng)態(tài)、空閑態(tài)
用戶(hù)態(tài):表示CPU處于用戶(hù)態(tài)執(zhí)行的時(shí)間
系統(tǒng)態(tài):系統(tǒng)內(nèi)核執(zhí)行的時(shí)間
空閑態(tài):空閑系統(tǒng)進(jìn)程執(zhí)行的時(shí)間
CPU利用率=CPU執(zhí)行非系統(tǒng)空閑進(jìn)程的時(shí)間/CPU總的執(zhí)行時(shí)間。這里的時(shí)間含義如下:
HZ:? Linux 核心每隔固定周期會(huì)發(fā)出 timer interrupt(時(shí)鐘中斷),HZ是用來(lái)定義每一秒有幾次時(shí)鐘中斷。例如 HZ 為1000,就代表每秒有1000 次時(shí)鐘中斷。
Jiffies: 在Linux的內(nèi)核中,有一個(gè)全局變量:Jiffies。Jiffies代表時(shí)間。它的單位隨硬件平臺(tái)的不同而不同。Jiffies的單位就是1/HZ
Intel 平臺(tái)Jiffies的單位是1/100秒,這就是系統(tǒng)所能分辨的最小時(shí)間間隔。每個(gè)CPU時(shí)間片,Jiffies都要加1
CPU利用率計(jì)算公式:CPU利用率=(用戶(hù)態(tài)Jiffies + 系統(tǒng)態(tài) Jiffies)/ 總Jiffies
二、CPU測(cè)試方法
使用top命令查看哪些進(jìn)程是CPU的主要消耗者
>adb shell?
>top --help

-m? 最多顯示多少個(gè)進(jìn)程
-n 刷新次數(shù)
-d ?刷新間隔時(shí)間(默認(rèn)5秒)
-s 按哪列排序
adb shell top命令
> adb shell top

第一組數(shù)據(jù)的含義:
400%cpu: CPU總量
33%user: 用戶(hù)空間占用CPU的百分比
0%nice: 改變過(guò)優(yōu)先級(jí)的進(jìn)程占用cpu的百分比
30%sys? ?內(nèi)核空間占用cpu的百分比
337%idle? 空閑cpu百分比
0%iow? ?IO等待占用cpu的百分比
0%irq? ?硬中斷(Hardware IRQ)占用cpu的百分比
0%sirq? 軟中(Software Interrupts)占用CPU的百分比
第二組數(shù)據(jù)的含義:
PID???進(jìn)程id
USER: 進(jìn)程所有者
PR:進(jìn)程優(yōu)先級(jí)
NI: nice值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT:進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES?
RES:進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR:共享內(nèi)存大小,單位kb
S :進(jìn)程狀態(tài):D=不可中斷的睡眠狀態(tài), R=運(yùn)行, S=睡眠, T=跟蹤/停止, Z=僵尸進(jìn)程
%CPU:上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM:進(jìn)程使用的物理內(nèi)存百分比
TIME+:進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒