Linux下CPU的利用率
CPU利用率是对系统进行性能分析的重要因素,本文将说明CPU时间的组成以及利用率的计算方法。
内核中的时间
具体说明CPU的各种时间之前,先说明内核中几个重要的时间概念。
HZ是系统时钟在一秒内固定发出时钟中断的次数。HZ在编译内核前是可以进行配置的,因此通过下述命令就可以查看当前系统的时钟中断频率:
1 | cat /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为单位的。
建议继续学习:
- Linux如何统计进程的CPU利用率 (阅读:14324)
- 解剖CPU (阅读:8028)
- 查看 CPU, Memory, I/O and NetFlow (阅读:6439)
- 如何查看Linux 硬件配置信息 (阅读:5863)
- Linux下进程绑定多CPU运行 (阅读:5764)
- 从Java视角理解CPU上下文切换(Context Switch) (阅读:5434)
- Linux下的CPU使用率与服务器负载的关系与区别 (阅读:5206)
- 写Java也得了解CPU缓存 (阅读:4532)
- 进程运行于不同的 CPU 核 (阅读:4414)
- 7个示例科普CPU Cache (阅读:4140)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:edsionte 来源: edsionte's Linuxworld|新手区
- 标签: CPU 利用率
- 发布时间:2013-07-15 13:25:03
- [53] IOS安全–浅谈关于IOS加固的几种方法
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [50] android 开发入门
- [50] Oracle MTS模式下 进程地址与会话信
- [49] Go Reflect 性能
- [46] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑