/proc监控数据获取CPU信息

参考:
http://www.icsmile.com/2013/07/02/monitor_from_proc_cpu_mem.html



CPU的数据主要是从 “/proc/stat”获取,我们可以做下CPU使用率的计算。

AD3C5EA4669C4395A16CB1A3C071D6B7
D3EB3B3A5752433CB2AC81ADA615EFA4

那上面的东西代表什么呢?


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

输出

D79838A6A50046339184C47C006D4797

我们用 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

至此计算完成


你可能感兴趣的:(linux,/proc,运维.Linux运维)