测量java中的能耗

时间:2015-12-04 05:16:58

标签: java virtual-machine energy

我已经搜索了答案,但似乎没有人对我的问题有一个确切的答案。我想测量在虚拟机中执行java程序或任何程序时虚拟机的能耗。如果我们能够测量虚拟机中每个核心的能耗,那也很棒。 Java中的哪个插件可用于衡量虚拟机的能耗?

2 个答案:

答案 0 :(得分:2)

有几种方法可以衡量虚拟机的能量。

我假设您要测量虚拟机的能量以及正在执行的程序(如果有的话)。 (查找虚拟机的能耗 - 例如JVM - 本身并不包括在其上执行的程序要困难得多。)

有多种方法可以测量JVM的总能量。

  1. 你可以从墙上测量。看看this post
  2. 使用JNI在JVM下向下钻取并使用PAPI * API。
  3. 使用JNI在JVM下向下钻取并使用platform dependent hardware PMU event counters
  4. 使用底层内核数据结构或API。
  5. 在所有情况下,最准确的结果将是几个样本/测试运行的平均值。计算机系统中发生了很多事情,其中​​大部分是间歇性的,例如垃圾收集,中断处理和支持后台进程的虚拟机。

    #1的缺点是需要外部硬件。此外,它还包括所有,例如外围设备,内存等。您需要计算能耗的差异。

    #2的缺点是PAPI API只是API,它们的实现是隐藏的。由于支持的处理器硬件事件不断变化,许多PAPI API间接测量事物并且只能给出非常近似的结果。

    #3的缺点是PMU事件根据定义依赖于硬件。 PAPI API试图解决此问题。此外,早期的处理器通常没有能量PMU事件。

    #4的缺点类似于#2。

    祝你好运。

    * PAPI与Performance Application Programming Interface中一样,而不是Java access control API

答案 1 :(得分:1)

Java 安全。它可以防止您与真实硬件集成过多。我建议你不要使用Java。您应该使用某种系统语言(例如bash脚本)从硬件中获取元数据,然后将其写入Java可以轻松读取的内容(文件,套接字等)。