
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 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文件的功率格式。當前,我們支持兩種格式: 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-)的條款提供,該條款伴隨此分配,可在以下網址提供:
作者:阿德爾·諾雷丁