在Java(linux)中获取平均系统CPU使用率一段时间内

问题描述:

我基本上想要在一段时间间隔内平均得到com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()的结果,比如60秒。在Java(linux)中获取平均系统CPU使用率一段时间内

java.lang.management.OperatingSystemMXBean has getSystemLoadAverage(),但是从我读到的,得到'CPU负载'而不是'CPU使用率',这是不同的计算。

是否有预先存在的某种API来获得我想要的,还是我必须自己实现?

如果你想要一个平均是有意义的任何方式,它需要一个平均的一些数据集是大于1

查询系统当前CPU的负载,以规则的间隔,就像每秒一次,并将每个查询的结果随时间保存在某种类的集合中,如数组。在此之后,您可以获得阵列中最新的60个条目的平均值,这将是您最近60秒的平均CPU负载(精度为1秒)。

如果你不知道如何平均的东西,那将是average = sum_of_elements_values/number_of_elements

如果您想要某种形式的“绝对”精度而不是1秒精度,所有这些变化都是您必须查询每个CPU周期。