参考:
CPU的数据主要是从 “/proc/stat”获取,我们可以做下CPU使用率的计算。
那上面的东西代表什么呢?
CPU 以及CPU0、CPU1、CPU2、CPU3、CPU4、CPU5每行的每个参数意思
| 参数 | 解释 |
| user nice system idle iowait irq softirq steal guest |
从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) , 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies) |
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。
获取两次采样
粗略的计算下CPU使用率
执行获取两次结果然后计算:
cat /proc/stat|grep ^cpu && echo '##' &&sleep 1 &&cat /proc/stat|grep ^cpu
输出
我们用 cpu总的使用量计算
# cpu 488 0 3567 8501952 4776 303 924 0 0 # cpu 488 0 3568 8502646 4788 303 924 0 0 #公式 total = user+nice+system+idle+iowait+irq+softirq+steal+guest
total1=8512010 total2=8512717
#cpu空闲书计算公式 cpu_idle = (idle2-idle1)/(total2-total1)*100 #代入 (8502646-8501952)/8512717-8512010)*100 = 98.1612446959
#CPU使用率计算公式 cpu_usage = 100 - cpu_idle #代入 cpu_usage = 100-98.1612446959 = 1.8387553041
至此计算完成
转载于:https://blog.51cto.com/tianranzhai/1304632