
Joularjx é um agente baseado em Java para monitoramento de energia de software no nível do código-fonte.
A documentação detalhada (incluindo guias de usuário e referência) está disponível em: https://joular.github.io/joularjx/.
Para construir o Joularjx, você precisa de Java 11+ e Maven, basta construir:
mvn clean install -DskipTests
Como alternativa, você pode usar o invólucro maven enviado com o projeto com o comando:
Linux: ./mvnw clean install -DskipTests
Windows: ./mvnw.cmd clean install -DskipTests
Joularjx depende do seguinte software ou pacotes para obter a leitura de energia:
config.properties .powermetrics , uma ferramenta agrupada com macOS que requer execução com sudo Access. Recomenda -se autorizar os usuários atuais a executar /usr/bin/powermetrics sem exigir uma senha fazendo a modificação adequada para o arquivo sudoers .Também apoiamos a ASUS Tinker Board (s).
Joularjx é um agente Java, onde você pode simplesmente conectá -lo à máquina virtual Java ao iniciar a classe principal do seu programa Java:
java -javaagent:joularjx-$version.jar YourProgramMainClass
Se o seu programa for um arquivo jar, basta executá -lo como de costume ao adicionar joularjx:
java -javaagent:joularjx-$version.jar -jar yourProgram.jar
O Joularjx gerará vários arquivos CSV de acordo com as configurações (no config.properties ) e criará esses arquivos em uma pasta joularjx-results .
Os arquivos gerados estão disponíveis na seguinte estrutura de pastas:
filter-method-names ) Joularjx pode ser configurado modificando os arquivos config.properties :
filter-method-names : lista de strings que serão usadas para filtrar os métodos monitorados (consulte os arquivos gerados abaixo para explicações).save-runtime-data : Escreva os métodos de tempo de execução do consumo de energia em um arquivo CSV.overwrite-runtime-data : substitua os arquivos de dados de potência de tempo de execução ou, se definido como false, ele gravará novos arquivos para cada ciclo de monitoramento.logger-level : Defina o nível de informação (por Logger) fornecido pelo Joularjx no terminal (valores permitidos: desativado, informações, aviso, grave).powermonitor-path : caminho completo para o programa Power Monitor for Windows (apenas para Windows).track-consumption-evolution : gerar arquivos CSV para cada método que contém detalhes do consumo do método ao longo do tempo. Cada valor de consumo é mapeado para um registro de data e hora do UNIX.hide-agent-consumption : Se definido como true, o consumo de energia dos encadeamentos do agente não será relatado.enable-call-trees-consumption : os métodos de computação chamam o consumo de energia das árvores. Um arquivo CSV será gerado no final da execução do agente, associando -se a cada árvore de chamadas, seu consumo total de energia.save-call-trees-runtime-data : gravar tempo de execução do tempo de chamada do consumo de energia em um arquivo CSV. Para cada ciclo de monitoramento (1 segundo), um novo arquivo CSV será gerado, contendo o consumo de energia do tempo de execução das árvores de chamada. Os arquivos gerados incluirão registros de data e hora em seus nomes.overwrite-call-trees-runtime-data : Substituir o arquivo de dados de chamadas Power Data File, ou se definido como False, ele gravará um novo arquivo para cada ciclo de monitoramento.application-server : lida corretamente aos servidores e estruturas de aplicativos (Boot Sprig, Tomcat, etc.). Defina true ao executar em servidores de aplicativos. Se false, o loop de monitoramento verificará se a JVM é destruída, portanto, fechando o Joularjx quando o aplicativo terminar (no aplicativo Java regular). Se True, o Joularjx continuará monitorando corretamente, pois a JVM não for destruída em um servidor de aplicativos.vm-power-path : O caminho para o consumo de energia da máquina virtual. Dentro de uma máquina virtual, indique o arquivo que contém consumo de energia da VM (que geralmente é um arquivo no host que é compartilhado com o convidado).vm-power-format : Formato de energia do arquivo de energia VM compartilhado. Atualmente, suportamos dois formatos: watts (um arquivo que contém um valor de flutuação que é o consumo de energia da VM) e powerjoular (um arquivo CSV gerado pelo PowerJoular no host, contendo 3 colunas: Timestamp, utilização da CPU da VM e Power da VM). Você pode instalar o pacote JAR (e o PowerMonitor.exe no Windows) onde quiser e chamá -lo no javaagent com o caminho completo. No entanto, config.properties deve ser copiado para a mesma pasta em que você executa o comando java ou seu local deve ser definido com a propriedade -Djoularjx.config=/path/to/config.properties ao executar seu programa.
Nas máquinas virtuais, o Joularjx requer duas etapas:
Para dados de energia em tempo real ou a energia total na saída do programa, o Joularjx gerou dois arquivos CSV:
config.properties ). Esses dados não são apenas um subconjunto do primeiro arquivo de dados, mas um recálculo feito pelo Joularjx para fornecer dados precisos: métodos que iniciam com a palavra -chave filtrada, serão alocados a energia ou energia consumida pelos métodos JDK que ele chama. Por exemplo, se Package1.MethodA chamar java.io.PrintStream.println para imprimir algum texto em um terminal, calculamos:
println separadamente do MethodA . O último consumo de energia não incluirá aqueles consumidos pela println .Package1 , o consumo de energia do println será adicionado ao consumo de energia MethodA e o arquivo fornecerá apenas energia ou energia dos métodos Package1 .Conseguimos fazer isso analisando o Stacktrace de todos os threads em execução no tempo de execução.
O Joularjx Reader é um GUI para processar, analisar e visualizar arquivos de energia gerados por Joularjx. Está disponível em seu próprio repositório aqui.
Para citar nosso trabalho em um artigo de pesquisa, cite nosso artigo na 18ª Conferência Internacional sobre Ambientes 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}
}
O Joularjx é licenciado apenas sob a licença GNU GPL 3 (apenas GPL-3.0).
Copyright (C) 2021-2024, Adel Noureddine, Université de Pau et des Pays de l'Dour. Todos os direitos reservados. Este programa e os materiais que o acompanham são disponibilizados apenas nos termos da licença pública pública geral da GNU v3.0 (GPL-3.0-somente) que acompanha essa distribuição e está disponível em: https://www.gnu.org/license/gpl-3.0.html
Autor: Adel Nouderdine