
Joularjx est un agent basé sur Java pour la surveillance de l'alimentation logicielle au niveau du code source.
La documentation détaillée (y compris les guides d'utilisateur et de référence) est disponible sur: https://joular.github.io/joularjx/.
Pour construire Joularjx, vous avez besoin de Java 11+ et Maven, puis de construire:
mvn clean install -DskipTests
Alternativement, vous pouvez utiliser l'emballage Maven expédié avec le projet avec la commande:
Linux: ./mvnw clean install -DskipTests
Windows: ./mvnw.cmd clean install -DskipTests
Joularjx dépend des logiciels ou des packages suivants afin d'obtenir une lecture de puissance:
config.properties .powermetrics , un outil regroupé avec macOS qui nécessite une course avec l'accès sudo . Il est recommandé d'autoriser les utilisateurs actuels à exécuter /usr/bin/powermetrics sans nécessiter de mot de passe en apportant la modification appropriée dans le fichier sudoers .Nous prenons également en charge ASUS Tinker Board (s).
Joularjx est un agent Java où vous pouvez simplement l'accrocher à la machine virtuelle Java lors du démarrage de la classe principale de votre programme Java:
java -javaagent:joularjx-$version.jar YourProgramMainClass
Si votre programme est un fichier JAR, alors exécutez-le comme d'habitude tout en ajoutant Joularjx:
java -javaagent:joularjx-$version.jar -jar yourProgram.jar
Joularjx générera plusieurs fichiers CSV en fonction des paramètres de configuration (dans config.properties ) et créera ces fichiers dans un dossier joularjx-results .
Les fichiers générés sont disponibles sous la structure du dossier suivant:
filter-method-names ) Joularjx peut être configuré en modifiant les fichiers config.properties :
filter-method-names : Liste des chaînes qui seront utilisées pour filtrer les méthodes surveillées (voir les fichiers générés ci-dessous pour les explications).save-runtime-data : écrivez la consommation d'alimentation des méthodes d'exécution dans un fichier CSV.overwrite-runtime-data : écraser les fichiers de données d'alimentation d'exécution, ou s'il est défini sur false, il écrira de nouveaux fichiers pour chaque cycle de surveillance.logger-level : Définissez le niveau d'information (par enregistreur) donné par Joularjx dans le terminal (valeurs autorisées: off, info, avertissement, sévère).powermonitor-path : Path complet vers le programme Power Monitor for Windows (uniquement pour Windows).track-consumption-evolution : Générez des fichiers CSV pour chaque méthode contenant des détails de la consommation de la méthode sur le temps. Chaque valeur de consommation est mappée à un horodatage UNIX.hide-agent-consumption : Si elle est définie sur true, la consommation d'énergie des fils d'agent ne sera pas signalée.enable-call-trees-consumption : Calculer les méthodes d'appel des arbres Consommation d'énergie. Un fichier CSV sera généré à la fin de l'exécution de l'agent, en associant à chaque arbre d'appel, sa consommation d'énergie totale.save-call-trees-runtime-data : Écrivez la consommation d'énergie des arbres d'appel d'exécution dans un fichier CSV. Pour chaque cycle de surveillance (1 seconde), un nouveau fichier CSV sera généré, contenant la consommation d'énergie d'exécution des arbres d'appel. Les fichiers générés comprendront des horodatages dans leur nom.overwrite-call-trees-runtime-data : écraser le fichier de données d'alimentation d'appel d'écrasement, ou s'il est défini sur false, il écrira un nouveau fichier pour chaque cycle de surveillance.application-server : gère correctement les serveurs d'applications et les frameworks (Sprig Boot, Tomcat, etc.). Définir true lors de l'exécution sur les serveurs d'application. Si FALSE, la boucle de surveillance vérifiera si le JVM est détruit, fermant ainsi Joularjx à la fin de l'application (en application Java ordinaire). Si elle est vraie, Joularjx continuera de surveiller correctement car le JVM n'est pas détruit dans un serveur d'applications.vm-power-path : le chemin de la consommation d'énergie de la machine virtuelle. À l'intérieur d'une machine virtuelle, indiquez le fichier contenant la consommation d'énergie de la machine virtuelle (qui est généralement un fichier de l'hôte partagé avec l'invité).vm-power-format : Format d'alimentation du fichier d'alimentation VM partagé. Nous prenons actuellement en charge deux formats: watts (un fichier contenant une valeur de flotteur qui est la consommation d'énergie du VM), et powerjoular (un fichier CSV généré par Powerjoular dans l'hôte, contenant 3 colonnes: horodatage, utilisation du CPU du VM et CPU Power de la VM). Vous pouvez installer le package JAR (et le PowerMoritor.exe sur Windows) où que vous souhaitiez, et l'appeler dans le javaagent avec le chemin complet. Cependant, config.properties doit être copiée dans le même dossier que où vous exécutez la commande java ou son emplacement doit être défini avec la propriété -Djoularjx.config=/path/to/config.properties lors de l'exécution de votre programme.
Dans les machines virtuelles, Joularjx nécessite deux étapes:
Pour les données d'alimentation en temps réel ou l'énergie totale à la sortie du programme, Joularjx a généré deux fichiers CSV:
config.properties ). Ces données ne sont pas seulement un sous-ensemble du premier fichier de données, mais plutôt un recalcul effectué par Joularjx pour fournir des données précises: les méthodes qui commencent par le mot-clé filtré, se verront attribuer la puissance ou l'énergie consommée par les méthodes JDK qu'il appelle. Par exemple, si Package1.MethodA appelle java.io.PrintStream.println pour imprimer du texte à un terminal, alors nous calculons:
println séparément de MethodA . Cette dernière consommation d'énergie n'inclura pas celles consommées par println .Package1 , la consommation d'énergie de println sera ajoutée à la consommation d'énergie MethodA , et le fichier ne fournira que l'énergie ou l'énergie des méthodes Package1 .Nous parvenons à le faire en analysant le stackTrace de tous les threads en cours d'exécution lors de l'exécution.
Le lecteur Joularjx est une interface graphique pour traiter, analyser et visualiser les fichiers énergétiques générés par Joularjx. Il est disponible dans son propre référentiel ici.
Pour citer notre travail dans un document de recherche, veuillez citer notre article lors de la 18e Conférence internationale sur les environnements intelligents (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 est concédé sous licence uniquement sous la licence GNU GPL 3 (GPL-3.0 uniquement).
Copyright (C) 2021-2024, Adel Noureddine, Université de Pau et des paie de L'Adour. Tous droits réservés. Ce programme et les documents d'accompagnement sont mis à disposition aux termes de la licence publique générale GNU v3.0 uniquement (GPL-3.0-unique
Auteur: Adel Noureddine