admin 管理员组文章数量: 1184232
CPU 使用率是最常用来描述系统CPU 性能的指标 。
CPU 使用率是 单位时间内 CPU 使用情况的统计,以百分比的方式展示 。那么 **CPU 使用率到底是怎么算出来的吗? 再有 %user、%nice、 %system、%iowait 、%steal 等等,它们之间有什么不同吗?
CPU 使用率
Linux 作为一个多任务操作系统,将 每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉 。
为了维护 CPU 时间, Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jiffies 记录了开机以来的节拍数 。 每发生一次时间中断,Jiffies 的值就加 1 。
节拍率 HZ 是内核的可配选项, 可以设置为 100、250、1000 等 。不同的系统可能设置不同数值,你 可以通过查询 /boot/config 内核选项来查看它的配置值 。示例如下:
$ grep'CONFIG_HZ=' /boot/config-$(uname -r)
CONFIG_HZ=250
正因为节拍率 HZ 是内核选项 ,所以用户空间程序并不能直接访问。为了方便用户空间程序, 内核还提供了一个用户空间节拍率 USER_HZ,它总是固定为 100,也就是 1/100 秒 。这样,用 户空间程序并不需要关心内核中 HZ 被设置成了多少,因为它看到的总是固定值 USER_HZ 。
Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息,而 /proc/stat 提供的就是系统的 CPU 和任务统计信息 。比方说,如果 只关注 CPU 的话 , 可以执行下面的命令 :
# 只保留各个CPU的数据
$ cat /proc/stat |grep ^cpu
cpu 280580 7407 286084 172900810 83602 0 583 0 0 0
cpu0 144745 4181 176701 86423902 52076 0 301 0 0 0
cpu1 135834 3226 109383 86476907 31525 0 282 0 0 0
这里的输出结果是一个表格。其中, 第一列表示的是 CPU 编号 ,如 cpu0、cpu1 ,而第一行没有编号的 cpu ,表示的是所有 CPU 的累加。 其他列则表示不同场景下 CPU 的累加节拍数 , 它的单位是 USER_HZ,也就是 10 ms(1/100 秒),所以这其实就是不同场景下的 CPU 时间 。
具体含义可以
man proc
了解具体指标含义,这里着重介绍下面这些指标的含义:
- user(通常缩写为 us),代表 用户态 CPU 时间 。注意,它 不包括下面的 nice 时间 ,但 包括了 guest 时间 。
- nice(通常缩写为 ni),
版权声明:本文标题:Linux:CPU使用率是如何计算的?怎么查看CPU使用率?_cpu占用率 user kernel 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1773955669a3567648.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论