
Joularjx是基于Java的代理,用于在源代码级别上进行软件电源监视。
详细的文档(包括用户和参考指南)可用:https://joular.github.io/joularjx/。
要构建Joularjx,您需要Java 11+和Maven,然后构建:
mvn clean install -DskipTests
另外,您可以将Maven包装器与该项目一起使用:
Linux: ./mvnw clean install -DskipTests
Windows: ./mvnw.cmd clean install -DskipTests
Joularjx取决于以下软件或软件包,以获取电源阅读:
config.properties中指定其路径。powermetrics ,这是一种与MacOS捆绑在一起的工具,需要使用sudo Access运行。建议授权当前用户运行/usr/bin/powermetrics而无需通过对sudoers文件进行适当修改而需要密码。我们还支持Asus Tinker Board。
Joularjx是Java代理商
java -javaagent:joularjx-$version.jar YourProgramMainClass
如果您的程序是一个JAR文件,则只需在添加Joularjx时照常运行:
java -javaagent:joularjx-$version.jar -jar yourProgram.jar
Joularjx将根据配置设置(以config.properties )生成多个CSV文件,并将在joularjx-results文件夹中创建这些文件。
生成的文件在以下文件夹结构下可用:
filter-method-names设置,用于监视应用程序的方法的电源/能量数据)可以通过修改config.properties文件来配置joularjx:
filter-method-names :将用于过滤受监视方法的字符串列表(有关说明,请参见下面的生成文件)。save-runtime-data :在CSV文件中写入运行时方法的功耗。overwrite-runtime-data :覆盖运行时电源数据文件,或者如果设置为false,它将为每个监视周期编写新文件。logger-level :设置Joularjx在终端中给出的信息级别(允许值:关闭,信息,警告,严重)。powermonitor-path :Windows程序的Power Monitor(仅适用于Windows)的完整路径。track-consumption-evolution :为每种方法生成CSV文件,其中包含该方法消耗的详细信息。每个消耗值映射到UNIX时间戳。hide-agent-consumption :如果设置为真,则不会报告代理线程的能耗。enable-call-trees-consumption :计算方法称之为树木的能耗。 CSV文件将在代理执行结束时生成,并将其与每个呼叫树关联到总能量消耗。save-call-trees-runtime-data :编写运行时调用树功耗。对于每个监视周期(1秒),将生成一个新的CSV文件,其中包含呼叫树的运行时功耗。生成的文件将包括其名称中的时间戳。overwrite-call-trees-runtime-data :覆盖运行时调用树电源数据文件,或者如果设置为false,它将为每个监视周期编写新文件。application-server :正确处理应用程序服务器和框架(Sprig Boot,Tomcat等)。在应用程序服务器上运行时设置true 。如果为错误,则监视循环将检查JVM是否被销毁,因此在应用程序结束时(常规Java应用程序)关闭Joularjx。如果为true,则Joularjx将继续正确监视,因为在应用程序服务器中不会破坏JVM。vm-power-path :虚拟机的功耗的路径。在虚拟机中,指示包含VM功耗的文件(通常是与来宾共享的主机中的文件)。vm-power-format :共享VM功率文件的功率格式。当前,我们支持两种格式: watts (一个包含一个浮点值的文件,即VM的功耗)和powerjoular (由主机中的PowerJoular生成的CSV文件,包含3列:Timestamp,CPU的VM和VM的CPU使用率)。您可以随时安装JAR软件包(以及Windows上的PowerMonitor.exe),并使用完整的路径在javaagent中调用它。但是, config.properties必须复制到与运行Java命令的位置相同的文件夹,或者必须使用-Djoularjx.config=/path/to/config.properties属性设置其位置。
在虚拟机中,Joularjx需要两个步骤:
对于实时功率数据或程序退出的总能量,Joularjx生成了两个CSV文件:
config.properties中配置)。这些数据不仅是第一个数据文件的子集,而且是Joularjx为提供准确数据的重新计算:以滤波后关键字开头的方法,将被分配给它调用的JDK方法所消耗的功率或能量。例如,如果Package1.MethodA调用java.io.PrintStream.println将一些文本打印到终端,则我们计算:
println与MethodA分开消耗的功率或能量。后一种功耗不包括println消耗的功耗。Package1过滤方法,则将println的功耗添加到MethodA功率消耗中,并且该文件仅提供Package1方法的功率或能量。我们通过分析运行时所有运行线程的堆栈来实现此操作。
Joularjx Reader是一个GUI,可以处理,分析和可视化Joularjx生成的能量文件。它可以在此处提供自己的存储库。
为了在研究论文中引用我们的作品,请在第18届智能环境国际会议(IE2022)中引用我们的论文。
@inproceedings{noureddine-ie-2022,
title = {PowerJoular and JoularJX: Multi-Platform Software Power Monitoring Tools},
author = {Noureddine, Adel},
booktitle = {18th International Conference on Intelligent Environments (IE2022)},
address = {Biarritz, France},
year = {2022},
month = {Jun},
keywords = {Power Monitoring; Measurement; Power Consumption; Energy Analysis}
}
Joularjx仅根据GNU GPL 3许可(仅GPL-3.0)获得许可。
版权(C)2021-2024,Adel Noureddine,De Pau des de l'AdourUniversitéde l'Adour。版权所有。该程序和随附的材料可根据GNU通用公共许可证v3.0(仅GPL-3.0-)的条款提供,该条款伴随此分配,可在以下网址提供:
作者:阿德尔·诺雷丁