前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算 Linux CPU 利用率

计算 Linux CPU 利用率

作者头像
宋天伦
发布2020-07-16 15:30:07
2.1K0
发布2020-07-16 15:30:07
举报
文章被收录于专栏:frytea

在 Linux 系统中的 /proc/stat 文件中存储了CPU 活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。

代码语言:javascript
复制
$ cat /proc/stat 
cpu  1594121 406 1239990 396233700 162305 0 3641 0 0 0
cpu0 761327 194 604191 198151599 83873 0 1789 0 0 0
cpu1 832793 211 635798 198082101 78432 0 1852 0 0 0
intr 985115307 38 10 0 0 58 0 3 0 0 0 0 36 15 0 0 0 0 0 0 0 0 0 0 0 0 2473171 42 0 862348 0 57 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 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 0
ctxt 1896726060
btime 1592793001
processes 63407
procs_running 1
procs_blocked 0
softirq 191297272 3 90057502 70 10686595 0 0 34 51485476 0 39067592

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

参数

解析(单位:jiffies)

当前值

name

设备名。

cpu

user

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

1594121

nice

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

406

system

从系统启动开始累计到当前时刻,处于核心态的运行时间。

1239990

idle

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

396233700

iowait

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

162305

irq

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

0

softirq

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

3641

stealstolen

从系统启动开始累积到当前时刻,在虚拟环境运行时花费在其他操作系统的时间。

0

guest

从系统启动开始累积到当前时刻,在Linux内核控制下的操作系统虚拟cpu花费的时间。

0

guest_nice

从系统启动开始累积到当前时刻,在Linux内核控制下的操作系统虚拟cpu花费在nice进程上的时间。

0

注:jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在 linux 中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同 linux 内核可能值有不同,通常在 1ms 到 10ms 之间

totalCpuTime  = user  + nice + system + idle + iowait + irq + softirq + stealstolen + guest + guest_nice

cpu使用率计算:

  1. 请在一段时间内(推荐:必须大于0s,小于等于1s),获取两次cpu时间分配信息。
  2. 计算两次的cpu总时间:total_2 - total_1
  3. 计算两次的cpu剩余时间:idle_2 - idle_1
  4. 计算两次的cpu使用时间:used = (total_2 - total_1) - (idle_2 - idle_1)
  5. cpu使用率 = 使用时间 / 总时间 100% = used / total 100%
代码语言:javascript
复制
us: User time       -> %us = (User + Nice) / totalCpuTime * 100%
sy: System time     -> %sy = (System + Hard Irq + SoftIRQ) / totalCpuTime
ni: Nick time       -> %ni = (Nice) / totalCpuTime * 100%
id: Idle time       -> %id = (Idle) / totalCpuTime * 100%
wa: Waiting time    -> %wa = (Waiting) / totalCputTime * 100%
hi: Hard Irq time   -> %hi = (Hard Irq) / totalCpuTime * 100%
si: SoftIrq time    -> %si = (SoftRQ) / totalCpuTime * 100%
st: Steal time      -> %st = (Steal) / totalCputTime * 100%

参考文献


Author: Frytea

Title: 计算 Linux CPU 利用率

Link: https://cloud.tencent.com/developer/article/1663134

Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档