IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Linux下CPU的利用率

edsionte's Linuxworld|新手区 2013-07-15 13:25:03 累计浏览 6,654 次
本机暂存

CPU利用率是对系统进行性能分析的重要因素,本文将说明CPU时间的组成以及利用率的计算方法。

内核中的时间

具体说明CPU的各种时间之前,先说明内核中几个重要的时间概念。

HZ是系统时钟在一秒内固定发出时钟中断的次数。HZ在编译内核前是可以进行配置的,因此通过下述命令就可以查看当前系统的时钟中断频率:

1cat /boot/config-`uname -r` | grep CONFIG_HZ

tick为系统时钟每“滴答”一次的时间,其值为(1/HZ)秒。也就是连续两次时钟中断之间的时间间隔。

jiffies用来计算自系统启动以来tick的次数,也就是说系统时钟每产生一次时钟中断,该变量的值就增加一次。

CPU时间

CPU的工作时间由三部分组成:用户态时间、系统态时间和空闲态时间。具体的组成为;

CPU时间=User time+Nice time+System time+Hardirq time+Softirq time+Waiting time+Idle time+Steal time

空闲态时间只包含了idle time,而用户态时间和系统态时间则由多个部分组成,详析介绍如下。

用户态时间

用户态时间包括用户时间和nice时间。

用户时间(user time)指的是CPU在用户态执行进程的时间。nice时间(nice time)是指系统花费在调整进程优先级上的时间。

内核态时间

内核态时间包括系统时间、软中断时间和硬中断时间。

系统时间(system time)表示CPU在内核运行的时间,如果一个CPU的系统时间占有率高,则说明该系统中某个子系统产生了瓶颈。

软中断时间和硬中断时间分别对应系统在处理软硬中断时候所花费的CPU时间。

此外,waiting time是指CPU在等待I/O完成时所花费的时间。而steal time指的是当前CPU等待另外虚拟的CPU处理完毕时话费的时间。

CPU利用率

CPU利用率可以通过top等命令来查看,它们的计算方法如下:

%us =(User time + Nice time)/CPU时间*100%

%sy=(System time + Hardirq time +Softirq time)/

%id=(Idle time)/CPU时间*100%

%ni=(Nice time)/CPU时间*100%

%wa=(Waiting time)/CPU时间*100%

%hi=(Hardirq time)/CPU时间*100%

%si=(Softirq time)/CPU时间*100%

%st=(Steal time)/CPU时间*100%

查看方法

通过top、iostat和vmstat等命令均可以查看上述CPU的利用率。这些命令的数据来源均来自与/proc/stat文件,不过该文件中的时间是以tick为单位的。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,308)
  3. 如何查找消耗资源较大的SQL (累计阅读 15,211)
  4. 我的 RHCA 之路 (累计阅读 14,013)
  5. Linux内存点滴 用户进程内存空间 (累计阅读 13,230)
  6. 给程序员新手的一些建议 (累计阅读 13,089)
  7. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  8. 关于linux内存free的一些事情 (累计阅读 12,867)
  9. ps - 按进程消耗内存多少排序 (累计阅读 12,688)
  10. Google怎么用linux (累计阅读 12,581)