赞
踩
文章目录
之前写熔断功能,需要获取机器的cpu使用率
从/proc文件系统获取cpu使用情况: cat /proc/stat
输出解释:
idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
得到:
CPU利用率 = 1- (idle2-idle1)/(cpu2-cpu1)
这里的idle1、idle2是从 开机到现在 的cpu空闲时间,cpu1、cpu2是从开机到现在的总的时间
一个同事说,这样违背了需求,不是瞬时的cpu的值
举个栗子
假如我凌晨0点开始,现在是24小时后的凌晨0点,在这一天中,0点到1点我都开吭哧吭哧的干活,早早干完了,1点到24点,坐着嗑瓜子,如果算瞬时的cpu使用率,岂不是要 1/24 ,可是这能表示我当前的cpu吗?
注意cpu的单位是时间
所以就出现了上面的公式
CPU利用率 = 1- (idle2-idle1)/(cpu2-cpu1)
而我们两次采集的时间间隔尽可能的小,就确保了尽可能的求瞬时的值,但是不能到达真正的瞬时。
其实按照正常的思维,用开始到现在使用的时间除以开始到现在总的时间,看似是瞬时的,实际上可以吧开始那个瞬间看做是一次采集,当前时间是一次采集,即相当于将上面的公式的采集时间拉长了,本质上没什么区别,反而精度下降了不是一点点。
通过将时间间隔缩小确实能够达到目的,但是不能小于Jiffies,什么是Jiffies,看下面我摘录的一段话:
在Linux的内核中,有一个全 局变量:Jiffies。
Jiffies代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。