
JoularJX es un agente basado en Java para el monitoreo de energía de software a nivel de código fuente.
La documentación detallada (incluidas las guías de usuario y de referencia) están disponibles en: https://joular.github.io/joularjx/.
Para construir Joularjx, necesitas Java 11+ y Maven, luego solo construye:
mvn clean install -DskipTests
Alternativamente, puede usar el envoltorio maven enviado con el proyecto con el comando:
Linux: ./mvnw clean install -DskipTests
Windows: ./mvnw.cmd clean install -DskipTests
JoularJX depende del siguiente software o paquetes para obtener una lectura de energía:
config.properties .powermetrics , una herramienta incluida con macOS que requiere ejecutar con acceso sudo . Se recomienda autorizar a los usuarios actuales a ejecutar /usr/bin/powermetrics sin requerir una contraseña al hacer la modificación adecuada al archivo sudoers .También apoyamos los tableros de tinker ASUS.
JoularJX es un agente de Java donde simplemente puede conectarlo a la máquina virtual Java al comenzar la clase principal de su programa Java:
java -javaagent:joularjx-$version.jar YourProgramMainClass
Si su programa es un archivo JAR, simplemente ejecutelo como de costumbre mientras agrega JoularJX:
java -javaagent:joularjx-$version.jar -jar yourProgram.jar
JoularJX generará múltiples archivos CSV de acuerdo con la configuración de configuración (en config.properties ), y creará estos archivos en una carpeta joularjx-results .
Los archivos generados están disponibles en la siguiente estructura de carpeta:
filter-method-names ) JoularJX se puede configurar modificando los archivos config.properties :
filter-method-names : Lista de cadenas que se utilizarán para filtrar los métodos monitoreados (consulte los archivos generados a continuación para explicaciones).save-runtime-data : escriba métodos de tiempo de ejecución Consumo de energía en un archivo CSV.overwrite-runtime-data : sobrescribir los archivos de datos de potencia de tiempo de ejecución, o si se establece en False, escribirá nuevos archivos para cada ciclo de monitoreo.logger-level : Establezca el nivel de información (por Logger) dado por JoularJX en el terminal (valores permitidos: apagado, información, advertencia, severo).powermonitor-path : ruta completa al programa Power Monitor for Windows (solo para Windows).track-consumption-evolution : genere archivos CSV para cada método que contenga detalles del consumo del método durante el tiempo. Cada valor de consumo se asigna a una marca de tiempo UNIX.hide-agent-consumption : si se establece en verdadero, no se informará el consumo de energía de los hilos de agente.enable-call-trees-consumption : los métodos calculadores llaman al consumo de energía de los árboles. Se generará un archivo CSV al final de la ejecución del agente, asociando a cada árbol de llamadas es el consumo total de energía.save-call-trees-runtime-data : escriba el consumo de energía de los árboles de tiempo de ejecución en un archivo CSV. Para cada ciclo de monitoreo (1 segundo), se generará un nuevo archivo CSV, que contiene el consumo de energía en tiempo de ejecución de los árboles de llamadas. Los archivos generados incluirán marcas de tiempo en sus nombres.overwrite-call-trees-runtime-data : sobrescribir el archivo de datos de potencia de los árboles de tiempo de ejecución, o si se establece en falso, escribirá un archivo nuevo para cada ciclo de monitoreo.application-server : maneja correctamente los servidores y los marcos de aplicaciones (arranque de ramitas, tomcat, etc.). Establezca true cuando se ejecute en servidores de aplicaciones. Si es falso, el bucle de monitoreo verificará si el JVM se destruye, por lo tanto, cierre a JoularJX cuando finaliza la aplicación (en la aplicación Java regular). Si es cierto, JoularJX continuará monitoreando correctamente ya que el JVM no se destruye en un servidor de aplicaciones.vm-power-path : la ruta para el consumo de energía de la máquina virtual. Dentro de una máquina virtual, indique el archivo que contiene el consumo de energía de la VM (que generalmente es un archivo en el host que se comparte con el invitado).vm-power-format : formato de potencia del archivo de potencia de VM compartido. Actualmente admitimos dos formatos: watts (un archivo que contiene un valor flotante que es el consumo de energía de la VM) y powerjoular (un archivo CSV generado por PowerJoular en el host, que contiene 3 columnas: marca de tiempo, Utilización de CPU del poder VM y CPU de la VM). Puede instalar el paquete jar (y el powermonitor.exe en Windows) donde quiera, y llamarlo al javaagent con la ruta completa. Sin embargo, config.properties debe copiarse en la misma carpeta que se ejecuta el comando java o su ubicación debe establecerse con la propiedad -Djoularjx.config=/path/to/config.properties al ejecutar su programa.
En máquinas virtuales, JoularJX requiere dos pasos:
Para los datos de potencia en tiempo real o la energía total en la salida del programa, JoularJX generó dos archivos CSV:
config.properties ). Estos datos no son solo un subconjunto del primer archivo de datos, sino más bien un recalculación realizado por JoularJX para proporcionar datos precisos: los métodos que comienzan con la palabra clave filtrada, se asignará la energía o energía consumida por los métodos JDK que llama. Por ejemplo, si Package1.MethodA llama a java.io.PrintStream.println para imprimir algún texto en un terminal, luego calculamos:
println por separado de MethodA . El último consumo de energía no incluirá los consumidos por println .Package1 , entonces el consumo de energía de println se agregará al consumo de energía MethodA , y el archivo solo proporcionará energía o energía de los métodos Package1 .Logramos hacer esto analizando el StackTrace de todos los hilos en ejecución en tiempo de ejecución.
JoularJX Reader es una GUI para procesar, analizar y visualizar archivos de energía generados por Joularjx. Está disponible en su propio repositorio aquí.
Para citar nuestro trabajo en un trabajo de investigación, cite nuestro artículo en la 18ª Conferencia Internacional sobre entornos inteligentes (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 tiene licencia bajo la licencia GNU GPL 3 solamente (solo GPL-3.0).
Copyright (c) 2021-2024, Adel Noureddine, Université de Pau et des Pays de l'Adour. Reservados todos los derechos. Este programa y los materiales adjuntos están disponibles bajo los términos de la Licencia Pública General GNU V3.0 (GPL-3.0-Only) que acompaña a esta distribución, y está disponible en: https://www.gnu.org/licenses/gpl-3.0.en.html
Autor: Adel Noureddine