linux下cpu的使用率计算方法
linux系统在运行过程中,会将CPU的一些使用信息记录在/proc/stat文件里面。 cat /proc/stat信息如下: cpu 42070 4176 97027 6393033 15134 501 556 0 0 cpu0 42070 4176 97027 6393033 15134 501 556 0 0 intr 4214035 120 22341 0 1 1 0 5
linux系统在运行过程中,会将CPU的一些使用信息记录在/proc/stat文件里面。
cat /proc/stat信息如下:
cpu 42070 4176 97027 6393033 15134 501 556 0 0
cpu0 42070 4176 97027 6393033 15134 501 556 0 0
intr 4214035 120 22341 0 1 1 0 5 0 1 0 0 0 46417 0 0 108606 73951 91332 0 1175935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5195532
btime 1304348496
processes 11005
procs_running 2
procs_blocked 0
softirq 2827794 0 849358 33902 1154998 199387 20953 0 1511 567685
1. cpu/cpu0 为单个CPU的使用状况。其后面一串数据代表每个功能的使用时间(单位一般为10ms):
cpux : cpu序号,单核仅仅只有一个,双核有2个,以此类推
42070 : 用户态(user)下cpu使用时间
4176 : 优先级(nice)为负的程序的cpu使用时间
97027 : 系统态(sys)下cpu使用时间
6393033: cpu空闲使用时间(idle)
15134 : 硬盘IO(iowait)等待时间
501 : 硬中断(irq)使用时间
556 : 软中断(soft)使用时间
0 : 未知
0 : 未知
2. 计算cpu使用率的方法:
通常我们说的cpu的使用率,是指cpu在某段时间内的使用率,而不是从开机时间到当前的使用率。因此我们必须获取两次cpu状态,并通
过对这两次状态进行对比,从而得到当前时间的cpu使用率。
第一次获取cpu状态 -> 延时5秒 -> 第二次获取cpu状态 -> 通过获取得值进行计算,得到当前cpu在这5秒内的使用率
计算公式: 1 - (idle_time2 - idle_time1)/(all_time2 - all_time1)
c语言代码:
shell语言:
perl语言:
扩展知识:
1. 什么是用户态和内核态
用户态是指当前cpu处理的是用户操作代码。
内核态是指当前cpu处理的是内核的代码。
他们通过cpu中的寄存器的两位进行控制,内核态用intel cpu的Ring0模式,而用户态使用intel cpu的Ring3模式。在用户态状态下不能访问内核态的代码和数据的地址空间。
更多推荐
所有评论(0)