在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间 / CPU总的执行时间。

在Linux系统中,CPU时间的分配信息保存在/proc/stat文件中,利用率的计算应该从这个文件中获取数据。文件的头几行记录了每个CPU的用户态,系统态,空闲态等状态下分配的时间片(单位是Jiffies),这些数据是从CPU加电到当前的累计值。常用的监控软件就是利用/proc/stat里面的这些数据来计算CPU的利用率的。

不同版本的linux /proc/stat文件内容不一样,以Linux 2.6来说,/proc/stat文件的内容如下:

cpu 2032004 102648 238344 167130733 758440 15159 17878 0

cpu0 1022597 63462 141826 83528451 366530 9362 15386 0

cpu1 1009407 39185 96518 83602282 391909 5796 2492 0

intr 303194010 212852371 3 0 0 11 0 0 2 1 1 0 0 3 0 11097365 0 72615114 6628960 0 179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ctxt 236095529

btime 1195210746

processes 401389

procs_running 1

procs_blocked 0

第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义(单位:jiffies):

user (2032004)

从系统启动开始累计到当前时刻,用户态的CPU时间,不包含nice值为负进程。

nice (102648)

从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

system (238344)

从系统启动开始累计到当前时刻,核心时间

idle (167130733)

从系统启动开始累计到当前时刻,除IO等待时间以外其它等待时间

iowait (758440)

从系统启动开始累计到当前时刻,IO等待时间

irq (15159)

从系统启动开始累计到当前时刻,硬中断时间

softirq (17878)

从系统启动开始累计到当前时刻,软中断时间

因为/proc/stat中的数值都是从系统启动开始累计到当前时刻的积累值,所以需要在不同时间点t1和t2取值进行比较运算,当两个时间点的间隔较短时,就可以把这个计算结果看作是CPU的即时利用率。

CPU的即时利用率的计算公式:

CPU在t1到t2时间段总的使用时间 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1)

CPU在t1到t2时间段空闲使用时间 = (idle2 - idle1)

CPU在t1到t2时间段即时利用率 =  1 - CPU空闲使用时间 / CPU总的使用时间

转载于:https://www.cnblogs.com/gavin11/p/10653785.html

Linux使用/proc/stat计算CPU使用率相关推荐

  1. linux查看cpu的赫兹,linux平台jiffies和HZ Cpu使用率

    HZ:1秒钟内,时钟中断的次数,即1秒钟内,系统时钟的节拍次数. jiffies:全局变量,用来记录系统自启动以来产生的节拍总数 系统运行时间(以秒为单位):system_time=(jiffies) ...

  2. 【prometheus】计算CPU使用率

    prometheus版本 版本信息: 2.19 prometheus版本不一样,语法会有些区别,注意查看官方文档: https://prometheus.io/docs/prometheus/late ...

  3. 计算CPU使用率【prometheus】

    1.CPU使用率公式 我们知道 CPU的使用率 = (所有非空闲状态CPU使用时间总和 )/(所有状态CPU时间总和) 由下列公式: CPU使用时间总和 = 所有非空闲状态CPU使用时间总和 + 所有 ...

  4. 理解Linux系统平均负载和CPU使用率

    CPU 使用率 CPU 使用率就是 CPU 非空闲态运行的时间占比,它反映了 CPU 的繁忙程度.比如,单核 CPU 1s 内非空闲态运行时间为 0.8s,那么它的 CPU 使用率就是 80%:双核 ...

  5. linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高

    摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...

  6. Linux —— Ubuntu下C++获取CPU使用率、GPU使用率、GPU温度

      非代码      首先介绍在Ubuntu下不使用代码查看的方式来查看CPU使用率.GPU使用率.GPU温度. 查看CPU使用率:top查看GPU使用率及温度:nvidia-smi   代码     ...

  7. 【Linux】限制进程的CPU使用率

    目录 限制进程CPU使用率 限制进程资源的工具 限制进程CPU使用率 工具  cpulimit 安装 1. cpulimit安装 1.1 Ubuntu/Debian: # apt-get instal ...

  8. linux 手动控制cpu转速,Linux 手动计算CPU使用率

    先声明,本文涉及到的知识是之前搜集到的,现在整理出来分享大家,虽然打上原创的tag,但还是向原创致敬!如果涉及到侵权的问题,请联系我,我会及时更改! 目前linux统计cpu利用率时,所用到的信息,大 ...

  9. linux查看系统内存和cpu使用率,查看Linux系统内存、CPU、磁盘使用率

    一.查看内存占用 # free -m 以MB为单位显示内存使用情况 [root@localhost ~]# free -m total used free shared buff/cache avai ...

  10. centos中bash占用cpu,Linux中显示内存和CPU使用率最高的进程和SHELL脚本例子

    显示CPU占用率最高的十个进程信息 #  ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head USER       PID %CPU %MEM  ...

最新文章

  1. MindSpore:自动微分
  2. 浅谈Python的编译与反编译
  3. 【转】C# 中的委托和事件
  4. linux切换root密码错,(转)Linux下root密码丢失和运行级别错误的解决办法
  5. 宝马3系m套件清单图_穿上套件我就不认识你了?华晨宝马1系新老对比
  6. php+sqlserver实现分页效果
  7. c/s架构nginx+php-fpm通信原理
  8. Ubuntu 通过apt安装VSCode
  9. 后台程序全局钩子获取鼠标滚轮滚动方向(VB6.0)
  10. school_vue操作记录
  11. 解决Latex编译报错:Command `\Bbbk‘ already defined. ...ol{\Bbbk} {\mathord}{AMSb}{“7C}
  12. task判断任务是否存在
  13. 第一章: 当前主流的小型嵌入式 GUI
  14. Java并发编程基础(一篇入门)
  15. python django 下载多个文件,接收多个文件
  16. 华为解锁刷机root教程详解
  17. 常用z反变换公式表_常用excel快捷键
  18. java实现将.acc格式转化为mp3格式
  19. CC2530天线发射功率与接收灵敏度——玩转ZigBee的高端操作(Zstack框架)
  20. python编程求一个数的平方根_用Python求一个数的平方根.

热门文章

  1. C语言/C++程序必须从main函数开始吗?main函数执行完后还执行其他语句吗?
  2. plsql快捷执行方式_UG编程必备的快捷键,收藏转发!
  3. html 加粗_一篇文章带你了解HTML格式化元素
  4. 拓扑次序(Topological Order)
  5. prometheus 筛选不同的cpu核心
  6. 华为p10应用市场无法连接服务器,华为p10如何连接电脑及没反应怎么解决【图文教程】...
  7. 设计佣金问题的java程序_三角形、nextday、佣金问题实验报告.doc
  8. java 写文件缓存_使用java NIO及高速缓冲区写入文件过程解析
  9. 【mybatis】mybatis基础知识总结
  10. idea快捷键自动生成序列化id