当前位置:   article > 正文

Java计算cpu利用率_java得到机器cpu使用率的计算方法深入理解

java 机器利用率怎么计算

文章目录

之前写熔断功能,需要获取机器的cpu使用率

从/proc文件系统获取cpu使用情况: cat /proc/stat

输出解释:

idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)

得到:

CPU利用率 = 1- (idle2-idle1)/(cpu2-cpu1)

这里的idle1、idle2是从 开机到现在 的cpu空闲时间,cpu1、cpu2是从开机到现在的总的时间

一个同事说,这样违背了需求,不是瞬时的cpu的值

举个栗子

b2c855636a6232c3a1ff26c8949d5650.png

假如我凌晨0点开始,现在是24小时后的凌晨0点,在这一天中,0点到1点我都开吭哧吭哧的干活,早早干完了,1点到24点,坐着嗑瓜子,如果算瞬时的cpu使用率,岂不是要 1/24 ,可是这能表示我当前的cpu吗?

注意cpu的单位是时间

所以就出现了上面的公式

CPU利用率 = 1- (idle2-idle1)/(cpu2-cpu1)

而我们两次采集的时间间隔尽可能的小,就确保了尽可能的求瞬时的值,但是不能到达真正的瞬时。

其实按照正常的思维,用开始到现在使用的时间除以开始到现在总的时间,看似是瞬时的,实际上可以吧开始那个瞬间看做是一次采集,当前时间是一次采集,即相当于将上面的公式的采集时间拉长了,本质上没什么区别,反而精度下降了不是一点点。

通过将时间间隔缩小确实能够达到目的,但是不能小于Jiffies,什么是Jiffies,看下面我摘录的一段话:

在Linux的内核中,有一个全 局变量:Jiffies。

Jiffies代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号