Skip to content
Thibault Béziers la Fosse edited this page Jun 4, 2019 · 2 revisions

Welcome to the pacmon wiki!

PACMON

PACMON is an extension of PowerApi. PACMON allows to easily measure the energy consumed by a Java application at the thread-level.

Instrumentation

The source code is instrumented using ByteBuddy. The main method of the application is instrumented to send a start signal at its beginning and a stop signal at its end to a server based monitor. All the methods of the application are also instrumented to send their begin and end timestamps to the server.

Use case

To start the server, simply run the main method of pacmon/jvmMonitor/src/main/java/org/atlanmod/HttpBasedMonitor.java . Once the server is running, instrument the source code using :

java -javaagent:target/Jar_Absolute_Path=Jar_Package_Name,Name_Of_The_Main_Method,Level_Of_Accuracy -jar Jar_Absolute_Path

Level_Of_Accuracy can either be process or thread, depending on the desired level of accuracy.

For exemple:

java -javaagent:target/energyInstrumentation-1.0-SNAPSHOT-jar-with-dependencies.jar=benchmark,main,thread -jar target/energyInstrumentation-1.0-SNAPSHOT-jar-with-dependencies.jar

Power Model

Considering PowerAPI power model we determine the following formula:

formulae

From this formula, we deduce the following formula for estimating the thread level energy consumption:

formula2

formula3

Evaluation

We compared Pacmon to jRAPL and PowerAPI (SimpleCPUModule):

chart1

chart2

Clone this wiki locally