首先看下效果图(双核):
CPU的信息通过: adb shell cat /proc/stat 获取。
下面看看获取的原始数据:
双核:
# two cores #cpu 11937 408 12814 141702 3902 2 113 0 0 0 #cpu0 7020 219 8514 63880 3260 2 101 0 0 0 #cpu1 4917 189 4300 77822 642 0 12 0 0 0
四核:
# four cores #cpu 3793945 104696 1276563 46787875 345859 184 10397 0 0 0 #cpu0 2777435 51830 976299 8594431 274469 69 9155 0 0 0 #cpu1 789109 40419 207105 12087689 56964 53 968 0 0 0 #cpu2 162857 9774 62312 12978118 10256 33 224 0 0 0 #cpu3 64544 2673 30847 13127637 4170 29 50 0 0 0
user+system+nice+idle+iowait+irq+softirq的含义是:
user 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1 jiffies=0.01秒
nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies)
irq 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
知道了上面的含义,则计算公式:
total = user+system+nice+idle+iowait+irq+softirq
cpu利用率 = (total-idle)/idle
当然前提是,你先获取前后一秒的两次数据