
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を使用します。これは、 sudoアクセスで実行する必要があるMacOSがバンドルされたツールです。 sudoersファイルを適切に変更することにより、パスワードを必要とせずに、現在のユーザーが/usr/bin/powermetricsを実行することを許可することをお勧めします。また、Asus Tinkerボードをサポートしています。
joularjxはJavaエージェントで、Javaプログラムのメインクラスを開始するときに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設定に応じて)joularjxは、 config.propertiesファイルを変更して構成できます。
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 :Trueに設定した場合、エージェントスレッドのエネルギー消費は報告されません。enable-call-trees-consumption :コンピューティングメソッドは、ツリーエネルギー消費を呼び出します。 CSVファイルは、エージェントの実行の終了時に生成され、各コールツリーに関連付けられています。save-call-trees-runtime-data :CSVファイルにランタイムコールツリーの消費電力を書き込みます。各監視サイクル(1秒)について、コールツリーのランタイム電力消費を含む新しいCSVファイルが生成されます。生成されたファイルには、名前にタイムスタンプが含まれます。overwrite-call-trees-runtime-data :ランタイムコールツリーパワーデータファイルを上書きするか、falseに設定されている場合は、監視サイクルごとに新しいファイルを書き込みます。application-server :アプリケーションサーバーとフレームワーク(Sprig Boot、Tomcatなど)を適切に処理します。アプリケーションサーバーで実行するときにtrueを設定します。 falseの場合、監視ループはJVMが破壊されているかどうかを確認し、アプリケーションが終了するとjoularjxを閉じます(通常のJavaアプリケーションで)。 Trueの場合、JOLARJXはJVMがアプリケーションサーバーで破壊されないため、引き続き正しく監視します。vm-power-path :仮想マシンの電力消費のためのパス。仮想マシン内で、VMの電力消費を含むファイル(通常、ゲストと共有されるホストのファイルです)を示します。vm-power-format :共有VMパワーファイルの電力形式。現在、2つの形式をサポートしています。WATTS(VMの消費電力である1つのフロート値を含むファイル)とpowerjoular (ホストのPowerJoularによって生成されたCSVファイル、3つの列、VM watts VMおよびCPU電力のCPU使用率)を含む)。 JARパッケージ(およびWindowsにPowerMonitor.exe)を必要に応じてインストールし、フルパスでjavaagentでそれを呼び出すことができます。ただし、 config.properties 、javaコマンドを実行する場所と同じフォルダーにコピーする必要があります。または、その場所-Djoularjx.config=/path/to/config.propertiesプロパティで設定する必要があります。
仮想マシンでは、joularjxには2つのステップが必要です。
リアルタイムの電源データまたはプログラムの出口での総エネルギーの場合、joularjxは2つのCSVファイルを生成しました。
config.propertiesで構成できます)。このデータは、最初のデータファイルのサブセットであるだけでなく、正確なデータを提供するためにjoularjxによって行われた再計算です。フィルタリングされたキーワードで始まるメソッドは、呼び出すJDKメソッドによって消費される電力またはエネルギーを割り当てられます。たとえば、 Package1.MethodAがjava.io.PrintStream.printlnを呼び出して端末にテキストを印刷する場合、次のように計算します。
MethodAとは別にprintlnによって消費される電力またはエネルギー。後者の消費電力には、 printlnが消費するものは含まれません。Package1からメソッドをフィルタリングすると、 printlnの消費電力がMethodA電力消費に追加され、ファイルはPackage1メソッドの電力またはエネルギーのみを提供します。ランタイム時にすべての実行スレッドのスタックトレースを分析することにより、これを行うことができます。
JoularJx Readerは、JoularJX生成されたエネルギーファイルを処理、分析、視覚化するGUIです。ここでは、独自のリポジトリで入手できます。
研究論文で私たちの作品を引用するには、インテリジェント環境に関する第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のみ)に基づいてライセンスされています。
Copyright(c)2021-2024、Adel noureddine、Universitédepauet des pays de l'adour。無断転載を禁じます。このプログラムと付随する資料は、この分布に付随するGNU General Public License v3.0のみ(GPL-3.0のみ)の条件で利用可能になり、https://www.gnu.org/licenses/gpl-3.0.en.htmlで入手できます。
著者:Adel Noureddine