1

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

4

2 回答 2

3

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

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

有几种方法可以测量来自 JVM 的总能量。

  1. 你可以从墙上测量。看看这个帖子
  2. 使用 JNI 深入了解 JVM 并使用 PAPI* API。
  3. 使用 JNI 深入了解 JVM 并使用平台相关的硬件 PMU 事件计数器
  4. 使用底层内核数据结构或 API。

在所有情况下,最准确的结果将是多个样本/测试运行的平均值。计算机系统中发生了很多事情,其中​​大部分是间歇性的,例如垃圾收集、中断处理和支持后台进程的虚拟机。

#1 的缺点是它需要外部硬件。此外,它还包括外围设备、内存等所有内容。您需要计算能源使用量的差异。

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

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

#4 的缺点与 #2 类似。

祝你好运。

*PAPI 在性能应用程序编程接口中,而不是Java 访问控制 API

于 2015-12-04T16:50:30.053 回答
0

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

于 2015-12-04T07:00:11.160 回答