[英]Getting average system CPU usage over a time interval in Java (linux)
我基本上希望com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()
的结果在一个时间间隔(例如60秒com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()
平均。
java.lang.management.OperatingSystemMXBean
具有getSystemLoadAverage()
,但是据我所读,它获得的是“ CPU负载”而不是“ CPU使用率”,后者的计算方式有所不同。
是否有某种预先存在的API可以得到我想要的东西,还是我必须自己实现它?
如果您希望平均值以任何方式有意义,则它必须是大于1的某些数据集的平均值。
以固定的时间间隔(例如每秒一次)向系统查询当前的CPU负载,并将每个查询的结果随时间保存在某种类型的集合中,例如数组。
之后,您可以获得阵列中最新60个条目的平均值,这就是最近60秒(1秒精度)的平均CPU负载。
如果您不知道如何对某物求平均,则应为average = sum_of_elements_values / number_of_elements
。
如果要某种形式的“绝对”精度而不是1秒的精度,则所有更改就是您必须查询每个CPU周期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.