参考:




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

/proc监控数据获取CPU信息
/proc监控数据获取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

输出

/proc监控数据获取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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-15
  • 2021-10-03
  • 2022-02-22
  • 2021-11-06
  • 2022-12-23
  • 2021-09-10
猜你喜欢
  • 2022-02-18
  • 2022-12-23
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2021-10-05
相关资源
相似解决方案