【问题标题】:Getting average system CPU usage over a time interval in Java (linux)在Java(linux)中获取一段时间内的平均系统CPU使用率
【发布时间】:2017-06-13 00:25:04
【问题描述】:

我基本上想要com.sun.management.OperatingSystemMXBean.getSystemCpuLoad() 的结果在一个时间间隔内平均,比如 60 秒。

java.lang.management.OperatingSystemMXBeangetSystemLoadAverage(),但是根据我的阅读,它得到的是“CPU 负载”而不是“CPU 使用率”,它的计算方式不同。

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

【问题讨论】:

    标签: java linux cpu-usage


    【解决方案1】:

    如果您希望平均值在任何方面都有意义,它需要是某个大于 1 的数据集的平均值。

    以固定的时间间隔(例如每秒一次)查询系统的当前 CPU 负载,并将每次查询的结果随时间保存在某种集合中,例如数组。

    之后,您可以获得数组中最近 60 个条目的平均值,这将是最后 60 秒的平均 CPU 负载(精度为 1 秒)。

    如果你不知道如何平均,那就是average = sum_of_elements_values / number_of_elements

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多